如何使用除英语以外的其他语言的python docx创建单词docx?

时间:2019-06-02 17:09:42

标签: python ms-word python-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')

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

ValueError:所有字符串必须与XML兼容:Unicode或ASCII,没有NULL字节或控制字符

1 个答案:

答案 0 :(得分:0)

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

我怀疑您要编写的Sinhala字符串的Unicode编码不是UTF-8。另一种可能性是该字符串包含一些控制字符(如错误消息中所述),尤其是在PowerPoint中复制和粘贴时可能出现的垂直制表符(VT,0xB或十进制11)。

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

import re

def sanitize_str(s):
    control_chars = "\x00-\x1f\x7f-\x9f"
    control_char_re = re.compile("[%s]" % control_chars)
    return control_char_re.sub("", s)

document.add_paragraph(sanitize_str(a))