如何在python中删除包含某个字符串的行

时间:2018-01-04 18:19:41

标签: python string

我有一个看起来像这样的文本文件

Big:house
small:door
Big:car
Small:chair
Big:plane

如何删除包含单词" big"所以它可能看起来像这样,我不想一起创建一个新文件

small:door
small:chair

这是我的尝试

with open('QWAS.txt','r') as oldfile:
for line in oldfile:
    if bad_words in line:
        newfile.write(line)

3 个答案:

答案 0 :(得分:0)

试试这个:

beforeInput

当然,这假设你想要消除冒号左边小或小的行。此外,您将有一个新的文件输出,因为我不认为您真的想要更新您的输入文件。

答案 1 :(得分:0)

这就是我们能做的:

  1. 将数据读取到字符串(删除以'big'开头的行)
  2. 转到文件的开头(搜索)
  3. 写字符串
  4. 截断(删除溢出)
  5. 现在到代码中,以读写模式打开它:

    with open('QWAS.txt','r+') as f:
        data = ''.join([i for i in f if not i.lower().startswith('big')]) #1
        f.seek(0)                                                         #2
        f.write(data)                                                     #3
        f.truncate()                                                      #4
    

答案 2 :(得分:0)

您可以尝试使用正则表达式

import re

oldfile = open('QWAS.txt','r')
newfile = open('newfile.txt','w')
for line in oldfile:
    if re.search('[Ss]mall',line):
        newfile.write(line)

oldfile.close()
newfile.close()

它给出了输出文件" newfile.txt"

small:door
Small:chair

如果你只是把每一行都不小的行写下来并写入新文件" newfile2.txt"

import re

oldfile = open('QWAS.txt','r')
newfile = open('newfile.txt','w')
newfile2 = open('newfile2.txt','w')

for line in oldfile:
    if re.search('[Ss]mall',line):
        newfile.write(line)
    else:
        newfile2.write(line)

oldfile.close()
newfile.close()
newfile2.close()