我有以下问题。 我试图从字符串中删除所有非字母字符(即数字(string.digits),标点符号(string.punctuation),非ascii字符(如φ,χ,ψ等) 这可以是一个简单的命令一样轻松地完成。快速删除字符串中的所有非字母字符,python
for i in str:
if i not in string.ascii_letters:
data1 = str.replace(i,"")
,或者使用过滤器 不过,我的问题是,我的字符串的长度大约为20.000.000(几本书串联在一起) 现在的情况。 3.000.000个字符,上面的命令花费了大约20分钟,因此我不敢用20,000.000个字符来尝试它。 能否请告诉我是否有真正快速的方法来做到这一点?
你是否一次需要所有的角色?如果没有,你可以使用'itertools.ifilter'。另外,使用'set(string.ascii_letters)'意味着更高效的成员资格测试。 – jonrsharpe 2015-01-31 20:52:08
你的代码甚至不会像你认为的那样工作。你正在运行'str.replace',它返回一个* new *字符串,将它赋值给'data1',然后在下一次找到另一个不在'in string.ascii_letters'中的字符时将结果扔掉。 – roippi 2015-01-31 20:54:58