UnicodeDecodeError:' charmap'编解码器无法解码

时间:2017-11-23 11:30:18

标签: python list append

我想获取文件的文本,每个新值都在新行上,例如hi /n this is my question /n can u answer it?

My_list应该看起来My_list[0]应该等于hiMy_list[1]应该等于this is my questionMy_list[2]应该等于can u answer it? }}

我尝试使用以下

这样做
with open(r'path.docx',encoding="utf8") as f:
    content = f.readlines()
content = [x.strip() for x in content]

采用类似于我在How do I read a file line-by-line into a list?找到的方法 然后我得到一个Syntax error for unicode我首先引用此链接Why do I get a SyntaxError for a Unicode escape in my file path?添加r并在第一次迭代时解决它然后出现此错误

return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte X in position Y: character maps to <undefined>

我提到此链接来解决UnicodeDecodeError: 'charmap' codec can't decode byte X in position Y: character maps to <undefined>并添加了encoding="utf8"。仍然没有工作。

编辑:我将编码更改为"Latin-1",但我没有从print (content)获得我想要的输出,而是我得到的内容{{1}我想要和期望的是一个列表,其中.docx文件的每一行都是一个元素(由/ n分隔)。

2 个答案:

答案 0 :(得分:1)

您的输入文件是docx文件,它是一个pkzip压缩存档。

您无法将其打开,就好像它是文本文件一样。

相反,您可以查看外部包,例如python-docx。这样的事可能适合你:

import docx

doc = docx.Document('path.docx')
content = [p.text for p in doc.paragraphs]

答案 1 :(得分:0)

从您提供的最后一个链接,我认为问题是您尝试读取的文件不是UTF-8编码的。你尝试过其他编码吗?有一个列表here