删除以下行:不包含逗号,或包含多个逗号(在Python中)

时间:2016-03-10 00:38:02

标签: python

我有点卡在这个上 - 我必须删除不包含逗号的行(删除),并删除(删除)包含多个逗号的行。我必须用Python编写脚本。我在下面列出了一个文件样本:

Anarchism,Taoism  
Anarchism,Laozi  
Anarchism,Zhuang Zhou  
brigand  
Anarchism,Diogenes of Sinope  
Anarchism,Cynicism philosophy  
Anarchism,Zeno of Citium  
Anarchism,Stoicism

感谢!!!!

3 个答案:

答案 0 :(得分:4)

所以你想保留只有一个逗号的行

>>> lines = """Anarchism,Taoism
... Anarchism,Laozi
... Anarchism,Zhuang Zhou
... brigand
... Anarchism,Diogenes of Sinope
... Anarchism,Cynicism philosophy
... Anarchism,Zeno of Citium
... Anarchism,Stoicism""".split("\n")
>>> [x for x in lines if x.count(",") == 1]
['Anarchism,Taoism', 'Anarchism,Laozi', 'Anarchism,Zhuang Zhou', 'Anarchism,Diogenes of Sinope', 'Anarchism,Cynicism philosophy', 'Anarchism,Zeno of Citium', 'Anarchism,Stoicism']
>>> 

答案 1 :(得分:1)

从文件中读取行并将带有1个逗号的行写入结果文件。说“无政府主义,道教” 无政府主义,老子
无政府主义,庄周 强盗
无政府主义,Sinope的Diogenes 无政府主义,犬儒主义哲学 无政府主义,Citium的芝诺 无政府主义,Stoicisms” 存储在“test.txt”文件中。

input = open("c:\\test.txt", "r")
output = open("c:\\result.txt", "w")
for line in input:
    if (line.count(",") == 1):
        print (line)
        output.writelines(line)
input.close()
output.close()

答案 2 :(得分:0)

import re
p = re.compile(ur'((?:[^,^\n]*\,){2,}[^,^\n]+\n)|(?![^,^\n]*\,)(?<=\n)([^,^\n]+\n)|^(?![^,^\n]*\,)([^,^\n]+)|(?![^,^\n]*\,)(?<=\n)([^,^\n]+)$', re.DOTALL)
str = u"Anarchism,Taoism  \nAnarchism,Laozi  \nAnarchism,Zhuang Zhou  \nbrigand  \nAnarchism,Diogenes of Sinope  \nAnarchism,Cynicism philosophy  \nAnarchism,Zeno of Citium  \nAnarchism,Stoicism"
str = re.sub(p,'', str)
print str

输出:

Anarchism,Taoism  
Anarchism,Laozi  
Anarchism,Zhuang Zhou  
Anarchism,Diogenes of Sinope  
Anarchism,Cynicism philosophy  
Anarchism,Zeno of Citium  
Anarchism,Stoicism