2015-08-28 87 views
0

更换整个字符串,如果它包含特定字母/字符...更换整个字符串,如果它包含特定字母/字符

我有一个文本文件(MYFILE.TXT),其中包含多行,例如:

热狗
目标
山羊

我想要做的是以下几点:

如果文件中的任何字/字符串包含字符“走”,那么,同一个品牌的新单词/字符串(“舟”)替换它,所以输出应该是这样的:

的热狗

我怎样才能在Python 2.7做到这一点?

with open('myFile.txt', 'r+') as word_bank: 
    new_lines = [] 
    for line in word_bank: 
     new_line = [] 
     for word in line.strip().split(): 
      if 'go' in word: 
       new_line.append('boat') 
      else: 
       new_line.append(word) 
     new_lines.append('%s\n' % ' '.join(new_line)) 
    word_bank.truncate(0) 
    word_bank.seek(0) 
    word_bank.writelines(new_lines) 

打开进行读取和写入文件,遍历它分割每行到组件的单词和寻找的“走出去”的实例来代替:

+0

我想你忘了问一个问题。 –

+0

什么是算法?即使它不包含字符“go”(至少不是按照该顺序),您也可以替换“The hotdog”,并且替换也不一致:第2行为g-> r,第3行为g-> b –

+0

我的不好! “热狗”线不会被替换,因为它不包含“去”。你是对的! – elyoe011

回答

0

像你想这样的事情听起来。保持列表,因为你不要想修改你正在迭代的东西。你会有一段糟糕的时光。一旦构建,截断文件(擦除它)并写出你想出来的东西。注意我转而坚持明确的'\n'到底,因为writelines不会为你做到这一点。

+0

这是它new_line.append(“船”),但不是替换文件内的文字(“目标”,“山羊”)。抱歉!我是新来的。 – elyoe011

+0

@ elyoe011没关系。不过,我不确定我是否理解这个问题。你的意思是它没有在原始文件中替换它们吗?我没有回信。我只是使用'print',所以你可以了解输出。 –

+0

正确!不是在原始文件中替换它们。我想要做的就是......如果它发现一个包含“go”的单词,用单词“boat”替换整个单词(包含“go”的单词) – elyoe011

相关问题