python str translate,str.translate() --文本过滤和处理
問題: 想清除整個范圍的字符,或者去掉音符
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()方法還是非常快的。
總結
以上是生活随笔為你收集整理的python str translate,str.translate() --文本过滤和处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓图标尺寸规范(安卓图标尺寸)
- 下一篇: appium的python教程_移动Ap