Nan*_*ncy 39 python python-2.7 python-3.x python-docx
我正在尝试使用python-docx
module(pip install python-docx
),但它似乎非常混乱,因为在github repo测试样本中他们使用的是opendocx
函数,但在readthedocs中他们正在使用Document
类.即使他们只是展示如何将文本添加到docx文件而不是读取现有文件?
第一个(opendocx
)不起作用,可能会被弃用.对于第二种情况,我试图使用:
from docx import Document
document = Document('test_doc.docx')
print document.paragraphs
Run Code Online (Sandbox Code Playgroud)
它返回了一份清单 <docx.text.Paragraph object at 0x... >
然后我做了:
for p in document.paragraphs:
print p.text
Run Code Online (Sandbox Code Playgroud)
它返回了所有文本,但缺少一些东西.控制台上的文本中不存在所有URL(CTRL + CLICK转到URL).
有什么问题?为什么缺少网址?
如何在不迭代循环的情况下获得完整的文本(类似open().read()
)
小智 38
你可以试试这个
import docx
def getText(filename):
doc = docx.Document(filename)
fullText = []
for para in doc.paragraphs:
fullText.append(para.text)
return '\n'.join(fullText)
Run Code Online (Sandbox Code Playgroud)
use*_*708 14
你也可以试试这个
from docx import Document
document = Document('demo.docx')
for para in document.paragraphs:
print(para.text)
Run Code Online (Sandbox Code Playgroud)
没有安装 python-docx
docx
基本上是一个zip文件,里面有几个文件夹和文件.在下面的链接,你可以找到一个简单的函数来提取文本docx
文件,而不需要安装python-docx
和lxml
它有时会产生问题:
http://etienned.github.io/posts/extract-text-from-word-docx-simply/
使用 python-docx,如 @Chinmoy Panda 的答案所示:
for para in doc.paragraphs:
fullText.append(para.text)
Run Code Online (Sandbox Code Playgroud)
但是,para.text
会丢失其中的文本w:smarttag
(相应的 github 问题在这里: https: //github.com/python-openxml/python-docx/issues/328),您应该使用以下函数:
def para2text(p):
rs = p._element.xpath('.//w:t')
return u" ".join([r.text for r in rs])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
80006 次 |
最近记录: |