2013-10-03 51 views
-1

我知道我已經發布了一個類似的問題,但這一個是不同的,我有更多的代碼。由於最後一個問題被拒絕了(儘管答案對我有幫助),mods可以刪除它,以免混亂論壇。刪除txt文件中每一個單詞的第二次出現(Python)l

無論如何,希望沒有人會因爲另一個試圖達到我的目標的問題而被激怒。

我試圖刪除txt文件中每一個奇怪的名稱出現。有兩個部分,以我的問題:

一)爲什麼會AttributeError: 'str' object attribute replace is read-only

B)我要對這個使用蓄能器模式以正確的方式還是有更好的方式來做到這一點?其他人已經建議使用re模塊,但由於我是初學者,對此我不太瞭解,所以暫時避免使用它。

這是我到目前爲止的代碼:

f = open("old_text.txt") 
temp = f.read() 
f.close 


new_file = open("new_text.txt", "w") 

counter = 0 
name = "Courtney" 

for number in range(temp.count(name)): 
    counter = +1 
    temp.find("Courtney") 
    if counter % 2 == 0: 
     pass 
    else: 
     temp.replace = ("Courteny", "") 

new_file.write(temp)   
new_file.close 

所以我想刪除「考特尼」的第一次出現,但不是第二個,以此類推,直到文件的末尾。然後將結果寫入新文件。

任何幫助是非常讚賞,

蓬鬆

+0

你不關閉與'f.close'文件。你需要調用函數('f.close()')。 – Matthias

回答

1
f = open("old_text.txt") 
temp = f.read() 
f.close 


new_file = open("new_text.txt", "w") 

counter = 0 
name = "Courtney" 

for number in range(temp.count(name)): 
    counter = +1 
    temp.find("Courtney") 
    if counter % 2 == 0: 
     pass 
    else: 
     temp = temp.replace("Courteny", "") 
#      ^No need for = sign here 

new_file.write(temp)   
new_file.close 

str.replace是一個函數,並採取了兩個參數,第一個要替換的東西,和第二的東西,你要替換它用。所以,你不需要在這裏指定任何東西。

這是你的代碼應該是什麼樣子:

remember = [] 
with open('old_text.txt', 'r') as old: 
    for var in old: 
     remember += str(var).split(' ')[::2] 
     remember += "\n" 

with open('new_text.txt', 'w') as new: 
    for var in remember: 
     new.write(var + ' ') 

print remember 
+0

謝謝!儘管程序仍然沒有做我想做的事,但這已經阻止了這個錯誤。我希望它通過刪除第一,第三,第五等名稱'Courtney'的文本文件進行迭代。 – Ben

+0

@fluffybonkers其實在你的代碼中有很多錯誤,我會盡力去解決它們。 –

+0

謝謝你的幫助。因此,我可以避免在將來被拒絕。我的問題是什麼引起了某人或其他人的厭惡並導致他們投票失敗? – Ben

0

這應做到:

import collections 
with open('path/to/input') as infile, open('path/to/output', 'w') as outfile: 
    counts = collections.defaultdict(int) 
    for line in infile: 
    line = line.strip().split() 
    for word in line: 
     if not counts[word]%2: 
     outfile.write(word + " ") 
     counts[word] += 1 
    outfile.write('\n') 
相關問題