2016-03-10 41 views
1

我已經編寫了一個簡短的程序,它會通過文本文件並用拼寫出的單詞替換文件中的縮寫。以下是我的代碼:在替換文本文件中的文本時保持格式化

acronyms = {'USA': 'United States of America', 'UK': 'United Kingdom'} 

paper = "Emails.txt" 

with open(paper) as main: 
    words = main.read().split('\s') 

text = ' '.join(acronyms.get(y, y) for y in words) 

paper = paper.rstrip(".txt") 
new_name = ''.join([paper,"_clarified.txt"]) 

with open(new_name, 'w') as f: 
    for word in text: 
     f.write(word) 

我的問題是我無法弄清楚如何完成我的任務並保持文本文件的格式。我甚至不確定現在出現了什麼問題 - 如果我使用words = main.read().split('\s'),則不會替換任何縮寫,而如果我使用words = main.read().split(),則可以很好地工作。我很感謝任何關於此事的指導,即使它只是指向正確的方向。提前致謝。

+0

如果'split()'完美地工作......問題是什麼? 「維護格式」是什麼意思? –

+0

@Nathaniel Ford我的意思是使文檔可讀的空行和空格。例如,不同電子郵件之間的空間。現在我的Emails_clarified文件只是一個巨大的文本塊。 – Cadmium

回答

2

問題是/s實際上不會返回任何內容,並且會分割全部空格會丟棄您分割的空白類型。所以,把你正在做它的頭是什麼:

>>> original_text = "Go USA\n Hail UK\n" 
>>> acronyms = {"USA": "America", "UK": "Britannia"} 
    for acronym in acronyms: 
...  original_text = acronyms[acronym].join(original_text.split(acronym)) 
... 
>>> original_text 
... 'Go America\n Hail Britannia\n' 

因此,而不是記號化,並在一次轉換的一切,你做一個傳過你要替換和修改文檔每縮寫的文件。當你完成每一個修改後,你輸出最終結果。

+1

完美的作品,謝謝。 – Cadmium

+0

耶!我很高興它做到了。 –