昨天的文章中,我们讲到了前五种技巧,今天我们继续了解后五种技巧!
在Python中检查字符串成员资格的最简单方法是使用in
运算符。语法非常自然。
s1 = 'perpendicular'
s2 = 'pen'
s3 = 'pep'
print('\'pen\' in \'perpendicular\' -> {}'.format(s2 in s1))
print('\'pep\' in \'perpendicular\' -> {}'.format(s3 in s1))
'pen' in 'perpendicular' -> True
'pep' in 'perpendicular' -> False
如果您对查找字符串中子字符串的位置更感兴趣(而不是简单地检查是否包含子字符串),那么find()字符串方法可能会更有帮助。
s = 'Does this string contain a substring?'
print('\'string\' location -> {}'.format(s.find('string')))
print('\'spring\' location -> {}'.format(s.find('spring')))
'string' location -> 10
'spring' location -> -1
find()
默认情况下,返回子字符串首次出现的第一个字符的索引,如果未找到子字符串,则返回-1。请查阅文档,以了解对此默认行为的可用调整。
如果要替换子字符串而不是仅仅找到它们怎么办?Python replace()
字符串方法将解决这一问题。
s1 = 'The theory of data science is of the utmost importance.'
s2 = 'practice'
print('The new sentence: {}'.format(s1.replace('theory', s2)))
The new sentence: The practice of data science is of the utmost importance.
可选的count参数可以指定如果同一子字符串多次出现,则要进行的最大连续替换数。
您是否有多个要以某种元素方式组合在一起的字符串列表?zip()
功能没问题。
countries = ['USA', 'Canada', 'UK', 'Australia']
cities = ['Washington', 'Ottawa', 'London', 'Canberra']
for x, y in zip(countries, cities):
print('The capital of {} is {}.'.format(x, y))
The capital of USA is Washington.
The capital of Canada is Ottawa.
The capital of UK is London.
The capital of Australia is Canberra.
是否想检查一对字符串是否彼此相似?从算法上讲,我们要做的就是计算每个字符串中每个字母的出现次数,并检查这些计数是否相等。使用模块的Counter
类collections
很简单。
from collections import Counter
def is_anagram(s1, s2):
return Counter(s1) == Counter(s2)
s1 = 'listen'
s2 = 'silent'
s3 = 'runner'
s4 = 'neuron'
print('\'listen\' is an anagram of \'silent\' -> {}'.format(is_anagram(s1, s2)))
print('\'runner\' is an anagram of \'neuron\' -> {}'.format(is_anagram(s3, s4)))
'listen' an anagram of 'silent' -> True
'runner' an anagram of 'neuron' -> False
如果要检查给定的单词是否是回文,该怎么办?从算法上讲,我们需要创建单词的反向,然后使用==
运算符检查这两个字符串(原始字符串和反向字符串)是否相等。
def is_palindrome(s):
reverse = s[::-1]
if (s == reverse):
return True
return False
s1 = 'racecar'
s2 = 'hippopotamus'
print('\'racecar\' a palindrome -> {}'.format(is_palindrome(s1)))
print('\'hippopotamus\' a palindrome -> {}'.format(is_palindrome(s2)))
'racecar' is a palindrome -> True
'hippopotamus' is a palindrome -> False
这些字符串处理“技巧”并不能使您自己成为文本分析或自然语言处理专家,但它们可能会使某人对追求这些领域和学习最终成为这种专家所必需的技术感兴趣。