我希望使用python-docx
获取某些docx文件的纯文本,但由于文本是用西班牙语编写的,因此我正在努力使用重音符号。
我正在使用this answer阅读文字:
def getText(filename):
doc = docx.Document(filename)
fullText = []
for para in doc.paragraphs:
fullText.append(para.text('utf-8'))
return '\n'.join(fullText)
返回的内容如下:
n\xc3\xbamero //should be número
有没有办法可以使用正确的重音来获取文字?
当我尝试使用此文件将此文本写入文件时:
file = open("/mnt/c/Users/lulas/Desktop/inSpanish/txt/course1.txt","w")
file.write(text)
我收到此错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in position 27: ordinal not in range(128)
这是由于如何读取/编码重音符。
答案 0 :(得分:2)
没有文字,只有编码文字。
您正在创建一个文本文件。使用字符编码写入文本文件。该错误表示您写入的文本包含您的字符编码不支持的字符。
因此,您必须选择不同的编码或不写入这些字符。请记住1)读者必须知道文件使用哪种编码,以便必须进行沟通和/或达成一致。 2)原始角色可能受到高度重视,因此丢弃或替换它们可能是一个糟糕的选择。
由于源文件(docx)使用Unicode字符集,因此Unicode编码可能是最佳选择。对于存储和流式传输Unicode,UTF-8是最常见的编码。所以,
file = open("/mnt/c/Users/lulas/Desktop/inSpanish/txt/course1.txt","w", encoding="utf-8")
file.write(text)
我认为问题不在于阅读。 n \ xc3 \ xbamero是以UTF-8编码时número的表示。无论向你展示什么,只是试图“乐于助人”。