COMオートメーションに依存しないWordファイルからプレーンテキストを抽出する方法はありますか? (これは、Windows以外のプラットフォームにデプロイされたWebアプリケーションの機能です。この場合は対処できません)COM /オートメーションを使わずにWord文書からテキストを抽出する最も良い方法は?
アンチワードは合理的な選択肢のようですが、放棄されたようです。
Pythonソリューションは理想的ですが、利用可能ではないようです。
COMオートメーションに依存しないWordファイルからプレーンテキストを抽出する方法はありますか? (これは、Windows以外のプラットフォームにデプロイされたWebアプリケーションの機能です。この場合は対処できません)COM /オートメーションを使わずにWord文書からテキストを抽出する最も良い方法は?
アンチワードは合理的な選択肢のようですが、放棄されたようです。
Pythonソリューションは理想的ですが、利用可能ではないようです。
私はcatdocまたはantiwordを使用していますが、解析するのが最も簡単な結果が得られます。私はこれをPython関数に埋め込んでいるので、Pythonで書かれた構文解析システムから使いやすいです。
import os
def doc_to_text_catdoc(filename):
(fi, fo, fe) = os.popen3('catdoc -w "%s"' % filename)
fi.close()
retval = fo.read()
erroroutput = fe.read()
fo.close()
fe.close()
if not erroroutput:
return retval
else:
raise OSError("Executing the command caused an error: %s" % erroroutput)
# similar doc_to_text_antiword()
-wをcatdocに変更すると、改行がオフになります。 DOCXファイルの場合
オープンオフィスは、OpenOfficeのAPIを使用してAPI
を持っている、とPython、およびAndrew Pitonyak's excellent online macro book私はこれを行うことができました。第7.16.4節は始める場所です。
それがすべてで、画面を必要とせずに動作させるためにもう一つの先端は、Hiddenプロパティを使用することです:
RO = PropertyValue('ReadOnly', 0, True, 0)
Hidden = PropertyValue('Hidden', 0, True, 0)
xDoc = desktop.loadComponentFromURL(docpath,"_blank", 0, (RO, Hidden,))
画面上にそれ以外の場合は、文書フリックアップ(おそらく、ウェブサーバコンソール上の)あなたがそれを開きます。
、DOCXドキュメントからプレーンテキストを抽出するための
http://cobweb.ecn.purdue.edu/~kak/distMisc/docx2txt
で利用できるPythonスクリプトのdocx2txtをチェックしてください。
(extracting text from MS word files in pythonと同じ答え)
私は今週行わネイティブのPythonのdocxモジュールを使用してください。ここではドキュメントからすべてのテキストを抽出する方法は次のとおりです。
document = opendocx('Hello world.docx')
# This location is where most document content lives
docbody = document.xpath('/w:document/w:body', namespaces=wordnamespaces)[0]
# Extract all text
print getdocumenttext(document)
100%のPython、無COM、ノー.NET、ノージャワ、regexsとなしの解析シリアル化されたXML、ないがらくたを参照してください。
このライブラリを作成していただきありがとうございます。私はあなたが3年前にこれを投稿したことを知っていますが、ライブラリを使ってDOCX文書をHTMLに変換する方法はありますか?乾杯。 –
@mikemaccana .doc(.docxではなく)ファイルも解析できますか? – ofnowhere
StackOverflowで質問する方法があっただけの場合。 – mikemaccana
Wordファイル(.docx)からテキストを抽出するだけであれば、Pythonでのみ行うことができます。 Guy Starbuckが書いたように、ファイルを解凍してXMLを解析するだけです。 .DOCと.odtため
try:
from xml.etree.cElementTree import XML
except ImportError:
from xml.etree.ElementTree import XML
import zipfile
"""
Module that extract text from MS XML Word document (.docx).
(Inspired by python-docx <https://github.com/mikemaccana/python-docx>)
"""
WORD_NAMESPACE = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
PARA = WORD_NAMESPACE + 'p'
TEXT = WORD_NAMESPACE + 't'
def get_docx_text(path):
"""
Take the path of a docx file as argument, return the text in unicode.
"""
document = zipfile.ZipFile(path)
xml_content = document.read('word/document.xml')
document.close()
tree = XML(xml_content)
paragraphs = []
for paragraph in tree.getiterator(PARA):
texts = [node.text
for node in paragraph.getiterator(TEXT)
if node.text]
if texts:
paragraphs.append(''.join(texts))
return '\n\n'.join(paragraphs)
コードの大部分!コードの背景が黒でない場合、あなたのブログについての小さな発言は、より読みやすくなります。 –
コメントをいただきありがとうございます。問題は、色が自分のサイトと一致するようにGithub CSSを少しハッキングしたことです。しかし、GithubがCSSに変更を加えると、今のようにスタイルシートを再度パッチする必要があります。私はこのアプローチを維持するかどうかわかりません... – Etienne
This worked well:python-docx
に触発され、私はこれを行うにはsimple functionを書かれています。
コマンドラインでopenofficeを呼び出して、ファイルをテキストに変換します。これをPythonにロードするだけです。
(これらはapparenlty文書化されていませんけれども他の形式のオプションを持っていると思われる。)のpython 3はpopen3を取り除くこと
注意、https://docs.python.org/3/library/subprocessを参照してください。html#replace-os-popen-os-popen2-os-popen3 – codeape