0%

Python String Processing Tips & Tricks

自然语言处理和文本分析是研究和应用的热点领域,在深入实践之前需要掌握一些基本的字符串操作和处理技巧,本文来梳理总结一下一些基本的Python处理字符串的操作。

必须掌握两种字符串处理技巧:首先是正则表达式,一种基于模式的文本匹配方法。关于正则表达式有许多精彩的介绍,但是喜欢通过视频学习的朋友仍然可以从这个视频中受益良多:fast.ai代码 -初涉自然语言处理

另一个必备的字符串处理技能是:能够利用给定编程语言的标准库进行基本的字符串操作。为此,本文便是一个简短的Python字符串处理入门教程,旨在为那些以文本分析作为职业的人士寻求更为深入的研究,抛砖引玉。

注意,有实际意义的文本分析远远超出字符串处理的范畴,那些更先进的核心技术可能不需要你频繁的亲自对文本进行操作。然而,对于一个成功的文本分析项目来说,文本数据预处理是非常重要而耗时的环节,所以,本文涵盖的字符串处理技能将很有价值。在基础层面上理解文本的计算处理对于理解更为先进的文本分析技术同样重要。

文中的一些示例使用Python标准库:string module字符串模块,为此,最好准备好string module以备参考。

string module字符串模块链接:https://docs.Python.org/2/library/string.html

空格剥离

lstrip() 剥离前导空格
rstrip() 剥离尾随空格
strip() 剥离前导和尾随空格

1
2
3
4
s = '     This is a sentence with whitespace.     \n'
print('{}'.format(s.lstrip()))
print('{}'.format(s.rstrip()))
print('{}'.format(s.strip()))

剥离除空格以外的字符只需传递要剥离的字符即可

1
2
s = 'This is a sentence with unwanted characters.AAA'
print('{}'.format(s.rstrip('A)))

format()文档

字符串拆分

split()将字符串拆分成较小的子字符串列表

1
2
s = 'This is a sentence'
print(s.split())

split()文档

列表元素合并成字符串

join()与split()互为逆方法

1
2
s = ['This', 'is', 'a', 'sentence']
print(' '.join(s))

join()文档

字符串反转

Python无内置字符串反转方法,可以先将字符串看做是字符的列表,再利用反转列表元素的方式进行反转。

大小写转换

用upper(), lower(), 和swapcase()方法可以进行大小写之间的转换。
upper()文档
lower()文档
swapcase()文档

检查是否有字符串成员

在Python中检查字符串成员的最简单方法是使用in运算符,语法与自然语言非常类似。
如果对找到字符串中子字符串的位置更感兴趣(而不是简单地检查是否包含子字符串),则利用find()方法更为有效。

字符串替换

找到子字符串之后,如果想替换这一子字符串,该怎么办?Python 中的replace()字符串方法将解决这一问题。
replace()文档

组合多个列表的输出

zip()将多个字符串列表组合在一起

1
2
3
4
countries = ['China', 'USA']
cities = ['Shanghai', 'NewYork']
for x, y in zip(countries,cities):
print('The biggest cit of {} is {}'.format(x, y))

zip文档

同字母异序词检查

想检查一对字符串中,其中一个字符串是否是另一个字符串的同字母异序词?从算法上来讲,需要做的是对每个字符串中每个字母的出现次数进行计数,再检查二者计数值是否相等,直接使用collections模块的Counter类便可实现。
collections模块的Counter类

回文检查

如果想检查给定的单词是否是回文,怎么办?从算法上看,需要创建一个单词的反转,然后利用 == 运算符来检查这2个字符串(原始字符串和反向字符串)是否相等。

1
2
3
4
5
def is_palindrome(s):
reverse = s[::-1]
if(s == reverse)
return True
return False

虽然掌握这些字符串处理“技巧”之后,并不意味着你已经成为了文本分析或自然语言处理专家,但这些技巧可能会激发出深入探究自然语言处理领域的兴趣,并掌握最终成为专家所必备的技能。

文本数据预处理:Python演练
Python中的·文本预处理:步骤、工具和示例
文本数据分析完整探索与可视化:可视化与NLP相结合

原文链接:10 Python String Processing Tips & Tricks