如何使用英语以外的python docx创建Word docx



我正在构建一个程序,从python代码创建打印输出。 此外,最终打印包含另一种语言(僧伽罗语(。我想使用 python docx 将此输出保存到 word 文档中。如何用另一种语言写成单词?

我的目标是用另一种语言(僧伽罗语(制作一个报告程序。我从小部件中获取所有用户输入,并设法用python的另一种语言打印结果行。现在,我想使用僧伽罗语将这些行写入word文件。

a= "කණ්ඩියේ උස මීටර් 5.0 ක් පළල මීටර් 2.0 හා දිග මීටර් 2.0 ක් පමණ වන කොටසක් 
අස්ථාවර වී"

document = Document()
document.add_heading("python word doc")
document.add_paragraph(a)
document.save('****\report.docx')

当我使用英语时,代码可以完成工作。但是,对于僧伽罗语,我不确定该怎么做?我收到以下锡纳拉语的错误消息。

ValueError:所有字符串都必须与 XML 兼容:Unicode 或 ASCII,不能使用 NULL 字节或控制字符

您看到的错误代码与语言没有直接关系。Word 对语言的唯一了解是使用哪个拼写词典。否则,它的文本只是任意的 unicode 字符序列。

我怀疑的是你尝试编写的僧伽罗语字符串的Unicode编码不是UTF-8。另一种可能性是字符串包含一些控制字符(如错误消息中所述(,特别是垂直制表符(VT、0xB 或十进制 11(,这些字符可能在从 PowerPoint 复制和粘贴时出现。

后者更容易检查,所以也许从那里开始。

import re
def sanitize_str(s):
    control_chars = "x00-x1fx7f-x9f"
    control_char_re = re.compile("[%s]" % control_chars)
    return control_char_re.sub("", s)
document.add_paragraph(sanitize_str(a))

最新更新