Python字符串看起来很简单,但是它们非常灵活,而且在代码里无处不在!
初看起来字符串似乎不像数据科学领域这样的高级,但是平常工作中经常需要大量的非结构化数据,深入研究字符串将会非常有启发!
1.用“ in”检查是否包含子串
当使用非结构化数据时,在较长的字符串中标识特定的单词或其他子字符串可能非常有帮助。最简单的方法是使用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']
2.F前缀魔法
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.
3.用[::-1]反转字符串
可以通过切片将字符串反转(与其他可迭代对象一样)。要反转任何可迭代的对象,都可以直接使用[::-1]。
-1用作step(步长)参数,Python通过该参数从最后一个值开始并以-1递增:
string = 'pythonisfun'
print(string[::-1])
# Returns: nufsinohtyp
4.用.replace()替换子字符串
要替换子字符串,可以使用replace方法。它适用于任何类型的字符串,包括一个简单的空格(因为Python没有内置的删除空格的方法)。
让我们看一个例子:
sample = 'Python is kind of fun.'
print(sample.replace('kind of', 'super'))
# 输出:
# Python is super fun.
5.用for循环遍历一个字符串
Python字符串是可迭代的对象(就像列表,集合等)。
如果要返回字符串的每个字母,可以编写:
sample = 'python'
for letter in sample:
print(letter)
# 输出:
# p
# y
# t
# h
# o
# n
6.使用.upper()、. lower()和.title()格式化字符串
Python字符串有时有点古怪。你从文件中获取的字符串,可能有小写、大写及首字母大写等内容,而你可能需要对它们进行格式化,以供日后使用。
- .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
7.检查回文和字谜
结合到目前为止所学的知识,你可以使用[::-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 是字迷!
8.使用.split()分割字符串
假设你得到一个包含多种数据的字符串,需要拆分此字符串以解析出单个数据片段。
在下面的示例中,字符串包含区域,销售代表的姓氏以及订单号。
你可以使用.split()分割这些值:
order_text = 'north-doe-001'
print(order_text.split('-'))
# 输出:
# ['north', 'doe', '001']
结论
在Python中字符串是最为频繁处理的数据类型之一,掌握它的高级技巧将会事功倍。
本文整理源自
<python成为专业人士笔记>thanks Nik