2015-04-07 56 views
0

我使用Python的編解碼器的一些UTF-8的文字寫在目錄中的文件差異在文本文件中手動保存和使用Python編解碼器:狐猴畸形文件

#-*-coding:utf-8-*- 
import codecs 

filename = 'afile' 
with codecs.open(filename, encoding='utf-8', mode='w') as fw : 
    fw.write('<DOC>\n<DOCNO>') 
    fw.write(filename) 
    fw.write('</DOCNO>\n<TEXT>\n')   
    fw.write('কাজ'.decode('utf-8')) 
    fw.write('\n</TEXT>\n</DOC>') 

現在,如果我跑狐猴(http://www.lemurproject.org/)有了這個文件,狐猴告訴我這個文件是'畸形的'。

0:00: Opened /home/userA/Documents/test_corpus/afile 
0:00: Error in /home/userA/Documents/test_corpus/afile : ../src/TaggedDocumentIterator.cpp(213): Malformed document: /home/userA/Documents/test_corpus/afile 

,但如果我在gedit中打開該文件,添加一個隨機字符,並刪除它(以便該文件內容保持不變),然後保存文件,那麼如果我跑狐猴,它運行完美。

0:00: Opened /home/userA/Documents/test_corpus/afile 
0:00: Documents parsed: 1 Documents indexed: 1 
0:00: Closed /home/userA/Documents/test_corpus/afile 

那麼,有沒有在一個文本文件被保存方式的差異,通過Python和由gedit中,由於其狐猴在兩種不同的情況不同的迴應?

+0

那麼GEdit使用什麼編解碼器來保存文件? –

+0

它使用了默認的UTF-8編碼 – Avisek

+0

您可以將GEdit格式保存到一個新文件並驗證其差異?也許有新的追加換行符? –

回答

2

你沒有在最後一行換行符寫一個輸出文件:

fw.write('\n</TEXT>\n</DOC>') 

的gedit可能補充說,在保存時額外的換行符。添加一個額外的\n

fw.write('\n</TEXT>\n</DOC>\n') 
相關問題