我正在构建一个从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字节或控制字符
答案 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))