删除不包含逗号或包含多个逗号的行(在Python中)

2024-04-23 17:53:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这一点上有点卡住了-我必须删除(删除)不包含逗号的行,并删除(删除)超过一个逗号的行。我必须用Python编写脚本。我在下面提供了一个文件示例:

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

谢谢!!!!你知道吗


Tags: 文件of脚本示例逗号zhousinopephilosophy
3条回答
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

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

>>> 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个逗号将行写入结果文件。说“无政府主义,道教
无政府主义,老子
无政府主义,壮州
布里冈
无政府主义,中石油的迪奥奇尼斯
无政府主义、犬儒主义哲学
无政府主义,公民的泽诺
无政府主义,斯多葛主义 存储在“测试.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()

相关问题 更多 >