我正在创建基于用户在表单中输入的word文档。但是,当用户输入一个unicode控制字符,并试图使用python-docx包将其作为word文件时,会出现以下错误:
File "src\lxml\apihelpers.pxi", line 1439, in lxml.etree._utf8
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
通过在每个请求之前检查表单中是否存在无效的xml字符(我有许多表单可能会出现此问题),并从字段中删除任何无效的xml字符,从而成功地解决了这个问题。然后我创建了一个新的不可变多字典,并用干净的文本填充它。
^{pr2}$这种方法非常有效。然而,我似乎不太可能是唯一一个有这个问题的人,但我却找不到任何干净的解决办法。所以问题是,我真的应该用现在的方式来解决这个问题吗?这很乏味,感觉好像我忽略了一些Flask或pythondocx设置或参数,它们可以解决这个问题。
这个例子是全功能的,如果复选框被选中,则执行before_request
函数。如果未选中该复选框,则不会执行该复选框,并显示所述的服务器错误。
控制字符是:U+000C : <control-000C> (FORM FEED [FF])
unicode中有大量的控制字符。因此,基本上,您需要删除控制字符,这是unicode字符中的一个类别。为此,我建议您使用来自unicodedata模块的unicodedata.category。在
参见以下代码:
相关问题 更多 >
编程相关推荐