用python-docx读取重音符号

时间:2018-04-28 20:29:12

标签: python character-encoding docx python-docx

我希望使用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)

这是由于如何读取/编码重音符。

1 个答案:

答案 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的表示。无论向你展示什么,只是试图“乐于助人”。