我正在使用Python编解码器将一些UTF-8文本写入文件
#-*-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>')
现在如果我在带有这个文件的目录上运行Lemur(http://www.lemurproject.org/),Lemur告诉我文档“格式错误”。
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中打开文件,添加一个随机字符并将其删除(以便文件内容保持不变),然后保存文件,那么如果我运行Lemur,它运行完美。
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保存文本文件的方式有所不同,因为Lemur在两种不同的场景中的响应方式不同吗?
答案 0 :(得分:2)
您正在最后一行编写没有换行符的输出文件:
fw.write('\n</TEXT>\n</DOC>')
GEdit可能会在保存时添加额外换行符。添加额外的\n
:
fw.write('\n</TEXT>\n</DOC>\n')