1
f = open('C://Users//fireqwert7//Documents//tesis.docx')


sts=''

for line in f:
    sts += line

print(sts)

f.close()

给出错误

Traceback (most recent call last):
  File "C:\Python32\regularexpressions.py", line 11, in <module>
    for line in f:
  File "C:\Python32\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 66: character maps to <undefined>

如果可以的话,如果您能告诉我为什么会发生这种情况以及下次如何避免它,我将不胜感激。我讨厌使用我不理解的东西。

4

1 回答 1

0

错误是说在您打开的文件中的某个位置(实际上是位置 66),有一个 unicode 代码实际上并未映射到真实字符。所以基本上,在文件的机器代码中的某个地方,一些位被弄乱了,现在它们所在的字节不再代表 unicode 编码中的字母。

编辑:经过进一步考虑(正如 Thomas 指出的那样),这是因为您尝试打开的文件是 .docx,它没有以 unicode 编码。它们以专有的 Microsoft 格式编码。我不确定是否有办法在 python 中打开一个并获得可读字符。

如果您想在 python 中处理此文档的内容,您需要将其转换(谷歌搜索“docx 到 unicode 转换器”会出现一些结果)或将文本复制并粘贴到纯文本文档中。

于 2013-06-29T06:37:44.117 回答