我想获取文件的文本,每个新值都在新行上,例如hi /n this is my question /n can u answer it?
My_list应该看起来My_list[0]
应该等于hi
,My_list[1]
应该等于this is my question
而My_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分隔)。
答案 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。