我有相当多的文本,包括像\n\t和\ r \n这样的控制字符.我需要用一个简单的空间替换它们 - >"".最快的方法是什么?谢谢
Sve*_*ach 24
我认为最快的方法是使用str.translate():
import string
s = "a\nb\rc\td"
print s.translate(string.maketrans("\n\t\r", " "))
Run Code Online (Sandbox Code Playgroud)
版画
a b c d
Run Code Online (Sandbox Code Playgroud)
编辑:因为这再次变成了关于性能的讨论,这里有一些数字.对于长字符串,translate()是方式比使用正则表达式快:
s = "a\nb\rc\td " * 1250000
regex = re.compile(r'[\n\r\t]')
%timeit t = regex.sub(" ", s)
# 1 loops, best of 3: 1.19 s per loop
table = string.maketrans("\n\t\r", " ")
%timeit s.translate(table)
# 10 loops, best of 3: 29.3 ms per loop
Run Code Online (Sandbox Code Playgroud)
这大约是40倍.
Mic*_*zcz 10
您也可以尝试正则表达式:
import re
regex = re.compile(r'[\n\r\t]')
regex.sub(' ', my_str)Run Code Online (Sandbox Code Playgroud)