2016-03-10 149 views
0

我有點卡在這一個 - 我必須刪除不包含逗號的行(刪除),並刪除(刪除)具有多個逗號的行。我必須用Python編寫腳本。我已經包括了文件的下面的示例:刪除不包含逗號或包含多個逗號(Python)的行

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

謝謝!!!!

+1

你可能想使用'str.count'方法 –

回答

1

讀取線線,並正好1逗號結果寫入文件的行。說 「無政府主義,道教
無政府主義,老子
無政府主義,莊周
強盜
無政府主義,第歐根尼諾普
無政府主義,犬儒主義哲學
無政府主義,芝諾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() 
+0

你的回答非常完美!謝謝! – lsch91

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'] 
>>> 
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