punctuation与translate

这两个都是python内置的模块,都是用于字符串操作,translate可以直接使用,但是在py3中需要有一个表格进行映射,详情可参考菜鸟,punctuation需要引入string库,最后会结合两者展示作用

translate()方法

描述

   Python translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。

语法

   translate()方法语法:

  • str.translate(table[, deletechars]);

参数

  1. table -- 翻译表,翻译表是通过maketrans方法转换而来。
  2. 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)

#输出
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

字符串常量的其他方法

image.png
  • 更多字符串相关操作可参考python笔记

常用案例

  小编是最近在练习统计文本内容的时候接触的这个模块,相比与re正则这样处理更加简便快捷,可以使用translate结合punctuation筛去所有的标点符号,然后得到返回的列表,对里面的元素遍历就能得到具体的文本单词个数了,这里的s是返回的列表

    f = "随意定义一个字符串或者读取文件都可以"
    #去除符号
    table = str.maketrans("", "", string.punctuation)
    s = f.translate(table)
    li = s.split()
    print(len(li))

你可能感兴趣的:(punctuation与translate)