这两个都是python内置的模块,都是用于字符串操作,translate可以直接使用,但是在py3中需要有一个表格进行映射,详情可参考菜鸟,punctuation需要引入string库,最后会结合两者展示作用
translate()方法
描述
Python translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。
语法
translate()方法语法:
- str.translate(table[, deletechars]);
参数
- table -- 翻译表,翻译表是通过maketrans方法转换而来。
- deletechars -- 字符串中要过滤的字符列表。
返回值
- 返回翻译后的字符串。
实例
#!/usr/bin/python
from string import maketrans # 引用 maketrans 函数。
intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)
str = "this is string example....wow!!!";
print str.translate(trantab);
- 也可以不定义table翻译表,直接设置成空字符串即可,可用来替换掉字符串中不需要的部分,类似批量replace作用
punctuation
String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作。
这里就是字符串常量中的一个小方法
- string.punctuation -> 所有标点字符
import string
if __name__ == '__main__':
print(string.punctuation)
#输出
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
字符串常量的其他方法
- 更多字符串相关操作可参考python笔记
常用案例
小编是最近在练习统计文本内容的时候接触的这个模块,相比与re正则这样处理更加简便快捷,可以使用translate结合punctuation筛去所有的标点符号,然后得到返回的列表,对里面的元素遍历就能得到具体的文本单词个数了,这里的s是返回的列表
f = "随意定义一个字符串或者读取文件都可以"
#去除符号
table = str.maketrans("", "", string.punctuation)
s = f.translate(table)
li = s.split()
print(len(li))