【发布时间】:2018-01-28 19:28:14
【问题描述】:
有没有办法将 unicode 字符写入 docx 文件?我试过python-docx,但它给了我TypeError。
追溯
Traceback(最近一次通话最后一次):
文件“”,第 1 行,在 runfile('H:/Python/Practice/new/download.py', wdir='H:/Python/Practice/new')
运行文件中的文件“C:\Program Files\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 866 行 execfile(文件名,命名空间)
文件“C:\Program Files\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 102 行,在 execfile exec(编译(f.read(),文件名,'exec'),命名空间)
文件“H:/Python/Practice/new/download.py”,第 37 行,在 document.add_paragraph(story.encode("utf-8"))
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\document.py”,第 63 行,在 add_paragraph return self._body.add_paragraph(text, style)
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\blkcntnr.py”,第 36 行,在 add_paragraph 段落.add_run(文本)
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\text\paragraph.py”,第 37 行,在 add_run run.text = 文本
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\text\run.py”,第 163 行,文本 self._r.text = 文本
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\oxml\text\run.py”,第 104 行,文本 _RunContentAppender.append_to_run_from_text(self, text)
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\oxml\text\run.py”,第 134 行,在 append_to_run_from_text appender.add_text(文本)
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\oxml\text\run.py”,第 142 行,在 add_text self.add_char(char)
文件“C:\Program Files\Anaconda3\lib\site-packages\docx\oxml\text\run.py”,第 156 行,在 add_char '\r\n' 中的 elif 字符:
TypeError: 'in ' 需要 string 作为左操作数,而不是 int
我试图抓取一个网站并将文本写入 MS Word 文件。文本使用当地语言(孟加拉语)。当我在控制台上打印story 时,它会完美地打印整个文本。
代码
import requests
from docx import Document
from bs4 import BeautifulSoup
url = "some url"
response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")
story = soup.find("div", {"dir": "ltr"}).get_text().replace("<br />", "\n", len(response.text))
title = "title"
document = Document()
document.add_heading(title, 0)
document.add_paragraph(story.encode("utf-8"))
document.save(title + ".docx")
【问题讨论】:
-
我添加了完整的回溯。顺便说一句,它完美地从
URL获取数据。当我在控制台上打印它时,它工作正常。 -
你试过不打电话给
.encode('utf-8')吗? -
如果我不使用
encode("utf-8"),它会给我一个包含一些块的文档。 -
有没有可能是因为字体不支持这些字符?如果您选择这些块并粘贴到浏览器中,它们会显示为普通字符吗?
-
哦,谢谢!将这些块粘贴到浏览器中可以正常工作,浏览器正常显示字符。 :D
标签: python unicode python-docx