【发布时间】:2020-11-26 10:57:40
【问题描述】:
我在一个 pdf 文件中有几篇文章,我正在尝试将这些文章分开并将它们写入单独的 Docx 文件。我设法使用正则表达式将它们分开,但是当我尝试将它们写入 docx 文件时,它会抛出此错误:ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters.
我的代码如下:
my_path = "/path/to/pdf"
newpath = textract.process(my_path)
newpath2 = newpath.decode("UTF-8")
result = re.findall(r'\d+ words(.*?)Document \w+', newpath2, re.DOTALL)
save_path = "/path/to/write/docx/files/"
for each in result:
import time
time=str(time.time())
finalpath = (os.path.join(save_path, time))
finalpath2 = finalpath+".docx"
mydoc = docx.Document()
mydoc.add_paragraph(each)
mydoc.save(finalpath2)
【问题讨论】:
-
那么,为什么不删除它们呢?
.add_paragraph(remove_control_characters(each.replace('\x00','')))与来自this answer 的remove_control_characters。 -
@WiktorStribiżew 非常感谢。在这样做之前我需要导入一些东西吗?它抛出这个错误:NameError: name 'remove_control_characters' is not defined
-
我与该函数定义共享了问题的链接。只需将该函数复制并粘贴到您的代码中即可。
-
@WiktorStribiżew 已接受!快速的问题。我将使用更多可能包含其他 unicode 字符的 PDF 文件。如何让这段代码预测其他 unicode 字符而不实际告诉它要替换什么字符
-
我知道如果文本中包含 Unicode 字符不是问题。您只需要删除那些使其与您正在使用的解析器不兼容的那些。
标签: python regex docx text-extraction python-docx