在Python中从文件内部删除特定行

时间:2015-10-07 06:06:26

标签: python file

我有一个文件列表。基本上TDT​​2语料库包括普通话和英语文件。我只想保留英文文件并删除普通文件。手动这样做需要很长时间,因为文件很大。

结构看起来像这样:

<ONTOPIC topicid=20001 level=YES docno=VOA19980630.1800.3165 fileid=19980630_1800_1900_VOA_ENG comments="NO">
<ONTOPIC topicid=20001 level=BRIEF docno=VOM19980220.0700.0559 fileid=19980220_0700_0800_VOA_MAN comments="NO">
<ONTOPIC topicid=20001 level=YES docno=VOM19980220.0700.1159 fileid=19980220_0700_0800_VOA_MAN comments="NO">

所以我想删除fileid中有'MAN'的文件。 如何在Python中执行此特定任务?

2 个答案:

答案 0 :(得分:0)

如果未使用\n写入行,只需将其从endswith子句中删除即可。 这将忽略以MAN comments="NO">结尾并输出其他文件的所有文件。

out = open('file2.txt','wb')    
for i in open('file.txt'):
    if i.endswith('MAN comments="NO">\n'):
        pass
    else:
        out.write(i)

out.close()

如果你确定&#39; MAN&#39;只会成为Mandarian的一部分。看起来更清洁。

out = open('file2.txt','wb')    
for i in open('file.txt'):
    if 'MAN' not in i:
        out.write(i)

out.close()

答案 1 :(得分:0)

你可以试试这个:

def start():
    sFile = "source.txt"
    dFile = "results.txt"
    with open(dFile, 'w') as dHandle:
        with open (sFile, "r") as fhandle:
            for fline in fhandle.readlines():
                if "MAN" not in fline:
                    dHandle.write(fline)

start()