我有一个巨大的文本和一个大约 10K 的单词列表。
Python 中用其他单词替换文本中所有单词的最快方法是什么?
编辑:
文本大小 >1Gb,文本是人工编写的,并且“极度标记化”(任何字母数字字符和任何其他单个符号都被分割成新的标记)
单词数>10K,文本中每个词频为1
所有替换中的替换词都是相同的。
Python 2.5-2.7
输入格式和搜索/替换配对信息将有必要完善这个答案(如果它接近开始的话),但这将是我对它的初步尝试(假设输入数据中存在某种形式的规律性,在我的示例代码中以空格分隔)以下)。
replacements = {
's1': 'r1',
's2': 'r2'
...
}
with open('input.txt') as fhi, open('output.txt', 'w') as fho:
for line in fhi:
words = line.split(' ')
fho.write(' '.join(map(lambda w: replacements.get(w, w), words))
# Or as a list comprehension from the comments.
fho.write(' '.join([replacements.get(w, w) for w in words]))
这里的想法是,我们将数据从输入文件重新定位到输出文件中。对于每行的每个单词,我们检查它是否在我们的替换字典中。如果是的话,我们检索新值,否则通过dict.get(key[, default])
方法。这可能并不理想,无法处理标点符号,可能会在未断行的输入文件上遇到问题等,但可能是一种开始方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)