我製作了一個GUI程序,可以在各個字段中輸入一些值。所有來自這些字段的信息都會合併到一個字典中,然後使用擱置模塊進行存儲。通過按下按鈕,我可以將所有字典條目導出到RTF文件中,因爲我希望文件的部分格式爲斜體。在用Python製作的RTF文件中打印新行
該程序的GUI和擱置部分工作得很好。我遇到的問題是將多行導出到RTF文件。當我將要寫入RTF文件的字符串打印到python shell中時,我得到了多行。但是當我將它導出到RTF時,它全部打印在一行上。我知道這通常應該通過向字符串添加一個\ n來解決,但這對我來說並沒有任何作用。任何人都可以告訴我我做錯了什麼,或者可能是一種解決方法,我仍然可以使用斜體來保存文本?
至於一個工作示例雲:
data = dict()
data['first'] = {'author': 'Kendall MA'
'year': '1987',
'title': 'This is a test title'}
data['second'] = {'author': 'Mark',
'year': '2014',
'title': 'It is not working correctly'}
rtf = open('../test.rtf', 'w')
rtf.write(r'{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Cambria;}}')
for key in data.keys():
entry = data[key]
rtf.write(r'{0} ({1}): \i {2} \i0'.format(entry['author'], entry['year'], entry['title']) + '\n')
rtf.write(r'}\n\x00')
rtf.close()
這個代碼給出的輸出爲:
馬克(2014):它未正確工作肯德爾(1987):這是測試題
雖然它應該是:
馬克(2014):它不能正常工作
肯德爾(1987):這是測試標題
編輯: 我發現/線/ PAR作品的組合。單獨使用它們並不是因爲我不清楚的原因(也許有人可以解釋?)。
但是發生了新的錯誤。當作者實際上是多個作者時,我通過list(['Kendall MA','Powsen RB'])輸入,然後使用','.join(entry ['author'])作爲單個字符串,第一個字被切斷。所以我會得到 'MA,Powsen RB'而不是'Kendall MA,Powsen RB'。有誰知道爲什麼以及如何對付它?
我不認爲真的有必要零終止一個純文本文件(這是一個RTF文件)... – usr2564301