gpt4 book ai didi

python - 在 Python 中读取 .dic 文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:24 25 4
gpt4 key购买 nike

我有一个从 WinEdt.org 获得的法语词典文件 (Zip File) .我想将此文件读入内存,但是当我这样做时出现错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in
position 69: ordinal not in range(128)

我也尝试过将 codecs 模块与编码 utf-8 一起使用,但这也不起作用:

    with codecs.open(self.template_folder_path + "/" + self.test_language + ".txt",
'rb', encoding='utf-8') as fp:
word_list = []

for line in fp:
word_list.append(line.strip())

self.words[self.test_language] = word_list

我如何读取这个文件?我还需要阅读该网站上的其他一些词典文件。我该怎么做?

最佳答案

latin1 aka ISO-8859-1 是“陷阱和幻觉”。latin1 解码随机二进制乱码“有效”,因为 latin1 编解码器将所有 256 个字节映射到一个 Unicode 代码点。

在这种情况下给出的信息 (1) 法语 (2) “WinEdt.org”(你好,这是“Windows”中的“Win”)。该文件可能以 cp1252 编码。

>>> guff = open('fr.dic', 'rb').read()
>>> z = guff.decode('latin1')
>>> sum((128 <= ord(c) < 160) for c in z) # count the C1 control characters
141
>>> aliens = set(c for c in z if 128 <= ord(c) < 160)
>>> aliens
set([u'\x9c'])
>>> from unicodedata import name
>>> name(u'\x9c')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: no such name
>>> name('\x9c'.decode('cp1252'))
'LATIN SMALL LIGATURE OE'

QED

更新:您询问了该网站上的其他文件。要做的第一件事是(按照网站的建议)阅读与字典相关联的 .TXT 文件。例如,大型俄语词典的 .TXT 文件显示“该词典采用标准 Windows 俄语代码页 (1251)”。如果做不到这一点,请尝试从此列表中最合适的:

cp1250 东欧拉丁文字,例如波兰语、捷克语、塞尔维亚语(拉丁字母)
cp1251 基于西里尔字母的脚本,例如俄语、乌克兰语、塞尔维亚语(西里尔字母)
cp1252 西欧拉丁文字,例如德语、法语
cp1253 希腊语
cp1254 土耳其语
cp1255 希伯来语
cp1256 阿拉伯语
cp1257 爱沙尼亚语、拉脱维亚语和立陶宛语
cp1258 越南语

关于python - 在 Python 中读取 .dic 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com