我有一个很大的文本和一个单词列表,大约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])方法返回原样的单词。这可能不理想,无法处理标点符号,可能会对未分成行的输入文件造成麻烦,等等,但是这可能是一种入门方法。

10-06 00:05
查看更多