注意: 从那以后,发现.txt文件本身已经以不可读的格式编码了吗?是否有任何方法可以以可读的格式读取.txt文件?
b''b'\ xd7 \ xa7 \ xd7 \ x90&\ xd7 \ xa0 \ xd7 \ xa6 \ xd7 \ x9c \ xd7 \ xa8 \ xd7 \ x99 \ xd7 \ xaa \ xd7 \ x92 \ x92 \ xd7 \ xa8 \ xd7 \ x9e \ xd7 \ xa0 \ xd7 \ x99 \ xd7 \ x94 \ xd7 \ x90 \ xd7 \ xa0 \ xd7 \ x92 \ xd7 \ x9c \ xd7 \ x94 \ xd7 \ x9e \ xd7 \ xa8 \ xd7 \ xa7 \ xd7 \ x97 \ xd7 \ x90 \ xd7 \ x9e \ xd7 \ xa8 \ xd7 \ x90 \ xd7 \ xaa \ xd7 \ x9e \ xd7 \ xa9 \ xd7 \ x95 \ xd7 \ xaa \ xd7 \ x9e \ xd7 \ xd7 \ xa4 \ xd7 \ x9c \ xd7 \ x92 \ xd7 \ x94 \ xd7 \ xa9 \ xd7 \ x99&\ xd7 \ x9c \ xd7 \ x98 \ xd7 \ x95 \ xd7 \ x9f \ xd7 \ x93 \ xd7 \ xa6 \ xd7 \ x9e \ xd7 \ x91 \ xd7 \ xa7 '
我正在尝试使用FastText为希伯来语文本创建单词嵌入。看起来FastText会自动将文本转换为其他(不可读的)字符编码。有谁知道为什么会这样以及如何取消转换?
我在Windows计算机上使用Python 3.5。尝试以“ UTF-8”编码读取矢量化单词,但它仍以无法读取的格式显示。
model = fasttext.cbow('your_file.txt', 'model')
model.words # list of words in dictionary
向量是如何出现的:
{'': <gensim.models.keyedvectors.Vocab at 0x1ca3f6cc208>,
'8\\xd7\\x95\\xd7\\xa0\\xd7\\x99\\xd7\\x94': <gensim.models.keyedvectors.Vocab at 0x1ca3b2fbda0>,
'2.199': <gensim.models.keyedvectors.Vocab at 0x1ca3aadf470>,
'42381': <gensim.models.keyedvectors.Vocab at 0x1ca3b348160>,
'7648': <gensim.models.keyedvectors.Vocab at 0x1ca3b0b7208>,
'1.9841': <gensim.models.keyedvectors.Vocab at 0x1ca3afd8080>,
'7\\x91\\xd7\\x90"\\xd7\\x90': <gensim.models.keyedvectors.Vocab at 0x1ca3b313e80>,
"xa0\\xd7\\x92'\\xd7\\x99&\\xd7\\x9e\\xd7\\x99\\xd7\\x9f": <gensim.models.keyedvectors.Vocab at 0x1ca3ab7b7f0>,
'9e\\xd7\\x90\\xd7\\x9c': <gensim.models.keyedvectors.Vocab at 0x1ca3ad39748>,
"a4\\xd7\\x99'": <gensim.models.keyedvectors.Vocab at 0x1ca3a8e9b38>,
'\\x90\\xd7\\x95': <gensim.models.keyedvectors.Vocab at 0x1ca3ad7fe48>,
'3501': <gensim.models.keyedvectors.Vocab at 0x1ca3aa1fbe0>,
'7214': <gensim.models.keyedvectors.Vocab at 0x1ca3a798cf8>,
'87195': <gensim.models.keyedvectors.Vocab at 0x1ca3aab47b8>,
答案 0 :(得分:0)
来自评论:
这是我从句子列表中创建txt文件的方式:
with open('your_file.txt', 'w') as f: for item in new_list: f.write("%s\n" % item.encode('utf8'))
这不起作用,将字节(str.encode
的结果)内插到字符串中,在str
上隐式调用bytes
,结果
"b'mystring'\n"
请注意在引号内的“ b” -写入文件的是字符串,而不是编码的字节。
正确的方法是在打开文件时声明所需的编码,然后编写 text :
with open('your_file.txt', 'w', encoding='utf-8') as f:
for item in new_list:
f.write('%s\n' % item) # assuming item is already a str
或以二进制模式打开文件,并写入 bytes :
with open('your_file.txt', 'wb') as f:
for item in new_list:
f.write(('%s\n' % item).encode('utf-8')) # make the string, _then_ encode
如果您使用-b标志执行Python,则第一次在str
实例上调用bytes
时将发出警告;如果使用-bb标志,则会引发异常。