手动保存和使用 Python 编解码器保存的文本文件的差异:Lemur 格式错误的文档
Difference in text file saved manually and with Python codecs : Lemur Malformed document
我正在使用 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 会告诉我该文件是 'malformed'.
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 在两种不同情况下的响应不同?
您正在编写输出文件,最后一行没有换行符:
fw.write('\n</TEXT>\n</DOC>')
GEdit 可能会在保存时添加额外的换行符。添加一个额外的 \n
:
fw.write('\n</TEXT>\n</DOC>\n')
我正在使用 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 会告诉我该文件是 'malformed'.
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 在两种不同情况下的响应不同?
您正在编写输出文件,最后一行没有换行符:
fw.write('\n</TEXT>\n</DOC>')
GEdit 可能会在保存时添加额外的换行符。添加一个额外的 \n
:
fw.write('\n</TEXT>\n</DOC>\n')