Python使用列表

时间:2015-10-13 12:55:13

标签: python string replace

我的问题是用另一个字符串替换文本文件中的字符串。这些关键字符串位于名为word_list的列表中。我尝试了以下,似乎没有任何效果。它打印出document.text中的句子,没有替换:

  word_list = {'hi' : 'test', 'how' : 'teddy'} 

  with open("document.txt") as main:
      words = main.read().split()

   replaced = []
   for y in words:
         replacement = word_list.get(y, y)
         replaced.append(replacement)
   text = ' '.join(word_list.get(y, y) for y in words)


   print text

   new_main = open("done.txt", 'w')
   new_main.write(text)
   new_main.close()

document.txt的内容:

   hi you, how is he?

当前输出与document.txt相同,应该是:

   test you, teddy is he?

任何解决方案/帮助将不胜感激:)

2 个答案:

答案 0 :(得分:1)

由于您似乎想要替换单词,因此这将使用更自然的定义'

;

import re
word_list = {'hi' : 'test', 'how' : 'teddy'}
with open('document.txt') as main, open('done.txt', 'w') as done:
    text = main.read()
    done.write(re.sub(r'\b\w+\b', lambda x: word_list.get(x.group(), x.group()), text))

答案 1 :(得分:0)

word_list = {'hi' : 'test', 'how' : 'teddy'} 

with open("document.txt") as main:
    with open('done.txt', 'w') as new_main:
        input_data = main.read()
        for key, value in word_list.iteritems():
            input_data = input_data.replace(key, value)

        new_main.write(input_data)

这将读取文件的全部内容(如果它是一个大文件,则不是最有效的),然后迭代搜索并替换字典中的项目,并在输入文本上调用replace。完成后,它会将数据写入您的新文件。

使用这种方法需要记住的一些事情

  • 如果您的输入文件很大,则会很慢
  • 你搜索模式也可以匹配单词片段,即。 hi会看which,所以你也应该照顾它。