美文网首页Python
str.translate() --文本过滤和处理

str.translate() --文本过滤和处理

作者: cook__ | 来源:发表于2018-10-02 12:13 被阅读12次

问题: 想清除整个范围的字符,或者去掉音符

1、使用str.translate()
s = 'python\fis\tawesome\r\n'
# 第一步是清理空格,可以先建立一个小型的转换表,然后使用reanslate()方法
remap = {
    ord('\t'): ' ',
    ord('\f'): ' ',
    ord('\r'): None
}
a = s.translate(remap)
a
Out[3]: 'python is awesome\n'

# 可以利用这种重新映射的思想进一步构建出更加庞大的转换表。例如:把所有的Unicode组合字符都去掉
import unicodedata
import sys
cmb_chrs = dict.fromkeys(c for c in range(sys.maxunicode) if unicodedata.combining(chr(c)))  # combining()函数可对字符做检查,判断它是否为一个组合型字符
b = unicodedata.normalize('NFD', a)  # NFC表示字符应该是全组成的(即,如果可能的话就使用单个代码点);NFD表示应该是使用组合字符,每个字符应该是能完全分解开的。
b
Out[9]: 'python is awesome\n'
b.translate(cmb_chrs)
Out[10]: 'python is awesome\n'
2、另外一种清理文本的技术涉及I/O编码和解码函数:先对文本做初步清理,然后通过结合encode()和decode()操作来处理文本
a = 'python is awesome\n'
b = unicodedata.normalize('NFD', a)  # 先对原始文本做分解操作
b.encode('ascii', 'ingore').decode('ascii')  # 这种方法只有当我们最终的目标是ASCII文本时才有用
Out[11]: 'python is awesome\n'
总结:

1、对于简单的替换操作,用str.replace()通常是最快的方式--即使必须多次调用也是如此
例:

def clean_spaces():
    s = s.replace('\r', '')
    s = s.replace('\t', ' ')
    s = s.replace('\f', ' ')
    return s

2、如果需要做任何高级的操作,比如字符到字符的重映射或删除,那么translate()方法还是非常快的。

相关文章

  • str.translate() --文本过滤和处理

    问题: 想清除整个范围的字符,或者去掉音符 1、使用str.translate() 2、另外一种清理文本的技术涉及...

  • Linux上文本处理三剑客grep及正则表达式

    Linux上文本处理三剑客: grep, egrep, fgrep:文本过滤工具,通过(模式:pattern)过滤...

  • note_6.3_grep命令与基本正则表达式

    文本处理工具 Linux上文本处理三剑客:  grep,egrep, fgrep:文本过滤工具(模式:patter...

  • note_17.3_awk

    GNU awk: 文本处理三工具:grep, sed, awk grep, egrep, fgrep:文本过滤工具...

  • awk

    awk的简介和功能 awk: Linux 文本处理三剑客:grep、sed和awk。其中grep是一种文本过滤工具...

  • 关于grep命令的一个小坑

    在Linux文本中有三个文本处理工具分别是: grep:文本过滤(模式:pattern)工具 gre...

  • Grep

    Linux文本处理三剑客 grep:文本过滤(模式:pattern)工具grep, egrep, fgrep(不支...

  • sed

    sed 流编辑器,过滤和替换文本 工作原理:sed命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并清空...

  • Linux文本处理三剑客——awk

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern; sed:行编辑器:模式空间、保...

  • Linux文本处理三剑客——sed

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern sed:行编辑器:模式空间、保持...

网友评论

    本文标题:str.translate() --文本过滤和处理

    本文链接:https://www.haomeiwen.com/subject/eknooftx.html