寻找一种有效的方法来删除字符串

时间:2017-05-18 20:44:31

标签: string python-2.7

我有很多文本文件(10,000,000),我想删除所有以 / m / 开头的令牌。我写了下面的代码,但我正在寻找更快的代码,因为我标记字符串然后再次加入令牌。

import nltk
def removeMId(str):
words=[]
tokens = nltk.word_tokenize(str)
i=0
for tkn in tokens:
    if not tkn.startswith('/m/'):
       words.append(tkn)
       i+=1
return ' '.join(words)

所有移除令牌都遵循此pattern=r''' /\m+(?:[-'/]\w+)*'''

这是输入的一个例子:

  

稿件处理费(支票必须是 / m / 09c7w0 美元,在 / m / 09c7w0 银行上绘制,MICR编码在支票底部,并支付给ASPET)。 / m / 01kqjn / m / 021b7r / m / 01w6dw 信用卡也被接受。

1 个答案:

答案 0 :(得分:1)

好吧,我会咬人 - 直截了当的做法是用正则表达式来做:

import re

TOKEN_REMOVER = re.compile(r"/m+[-'/]\w+\s?")

def removeMId(source):
    return TOKEN_REMOVER.sub("", source)

它应该比你的例子快得多。话虽这么说,Python并不是为了打破速度/效率记录而设计的,所以如果你需要的只是一次性文件修改,你可能需要查看专用的编译工具来完成同样的任务。