Python字符串看起来很简单,但是它们非常灵活,而且在代码里无处不在!
初看起来字符串似乎不像数据科学领域这样的高级,但是平常工作中经常需要大量的非结构化数据,深入研究字符串将会非常有启发!
当使用非结构化数据时,在较长的字符串中标识特定的单词或其他子字符串可能非常有帮助。最简单的方法是使用in运算符。
假设你正在使用列表等集合数据结构,并且需求是要确定字符串中是否存在某个子字符串。
在下面的示例中,你有一个的列表,并且想知道字符串“ West”是否在每个列表项中包含
sample_list = ['North West', 'West', 'North East', 'East', 'South', 'North'] is_west = ['Yes' if 'West' in location else 'No' for location in sample_list] #注意,这里使用了生成式语法 print(is_west) # 输出: # ['Yes', 'Yes', 'No', 'No', 'No', 'No']F字符串是在Python 3.6中引入的,它们没有得到足够的认可。
我说它们很神奇是有原因的。他们:
留出更大的灵活性,比其他方法更具可读性,并且执行速度更快。但是他们是什么?F字符串(或格式化的字符串文字)允许您将变量(或任何表达式)放入字符串中。然后在运行时执行表达式。
要编写f字符串,请在字符串前面加上’f’。
让我们看一个例子:
name = 'Nik' birthyear = 1987 print(f'My name is {name} and I am {2020-birthyear} years old.') #输出: My name is Nik and I am 33 years old.可以通过切片将字符串反转(与其他可迭代对象一样)。要反转任何可迭代的对象,都可以直接使用[::-1]。
-1用作step(步长)参数,Python通过该参数从最后一个值开始并以-1递增:
string = 'pythonisfun' print(string[::-1]) # Returns: nufsinohtyp要替换子字符串,可以使用replace方法。它适用于任何类型的字符串,包括一个简单的空格(因为Python没有内置的删除空格的方法)。
让我们看一个例子:
sample = 'Python is kind of fun.' print(sample.replace('kind of', 'super')) # 输出: # Python is super fun.Python字符串是可迭代的对象(就像列表,集合等)。
如果要返回字符串的每个字母,可以编写:
sample = 'python' for letter in sample: print(letter) # 输出: # p # y # t # h # o # nPython字符串有时有点古怪。你从文件中获取的字符串,可能有小写、大写及首字母大写等内容,而你可能需要对它们进行格式化,以供日后使用。
.upper()将返回一个字符串,其中所有字符均为大写.lower()将返回一个字符串,其中所有字符均小写.title()将每个英语单词的首字母大写让我们看看实际的例子:
sample = 'THIS is a StRiNg' print(sample.upper()) print(sample.lower()) print(sample.title()) # 输出: # THIS IS A STRING # this is a string # This Is A String结合到目前为止所学的知识,你可以使用[::-1]切片轻松检查字符串是否是回文。
如果单词或词组的正反拼写完全相同,则为回文。
同样,你可以使用排序函数返回字符串的已排序版本。如果两个排序的字符串相同,则它们是字谜:
string = 'taco cat' def palindrome(string_to_check): if string.lower().replace(' ', '') == string.lower().replace(' ', '')[::-1]: print("你找到了回文!") else: print("你的字符串不是回文") palindrome(string) # 输出: # 你找到了回文!字谜是通过重新排列另一个单词而形成的单词或短语。简而言之,如果两个单词具有相同的字母而只是字母排列顺序不一样,则它们是字谜。
如果要查看两个词是否为字谜,可以对两个词进行排序,看看它们是否相同:
def anagram(word1, word2): if sorted(word1) == sorted(word2): print(f"{word1} 和{word2} 是字迷!") else: print(f"{word1} 和 {word2} 不是字迷!") anagram('silent', 'listen') # 返回: # silent 和listen 是字迷!假设你得到一个包含多种数据的字符串,需要拆分此字符串以解析出单个数据片段。
在下面的示例中,字符串包含区域,销售代表的姓氏以及订单号。
你可以使用.split()分割这些值:
order_text = 'north-doe-001' print(order_text.split('-')) # 输出: # ['north', 'doe', '001']在Python中字符串是最为频繁处理的数据类型之一,掌握它的高级技巧将会事功倍。
本文整理源自
<python成为专业人士笔记>thanks Nik