it-swarm.asia

Cara mengekstrak teks dari file docx yang ada menggunakan python-docx

Saya mencoba menggunakan modul python-docx (pip install python-docx) Tapi sepertinya sangat membingungkan karena di github repo sampel uji mereka menggunakan fungsi opendocx tetapi di readthedocs mereka menggunakan kelas Document. Bahkan mereka hanya menunjukkan cara menambahkan teks ke file docx tidak membaca yang sudah ada?

Yang pertama (opendocx) tidak berfungsi, mungkin tidak digunakan lagi. Untuk kasus kedua saya mencoba menggunakan:

from docx import Document

document = Document('test_doc.docx')

print document.paragraphs

Ia mengembalikan daftar <docx.text.Paragraph object at 0x... > 

Lalu saya lakukan:

for p in document.paragraphs:
    print p.text

Itu mengembalikan semua teks tetapi ada beberapa hal yang hilang. Semua URL (CTRL + KLIK untuk pergi ke URL) tidak ada dalam teks pada konsol.

Apa masalahnya? Mengapa URL tidak ada?

Bagaimana saya bisa mendapatkan teks lengkap tanpa mengulangi perulangan (seperti open().read()

28
Nancy

anda bisa mencoba ini

import docx

def getText(filename):
    doc = docx.Document(filename)
    fullText = []
    for para in doc.paragraphs:
        fullText.append(para.text)
    return '\n'.join(fullText)
31
Chinmoy Panda

Anda dapat menggunakan python-docx2txt yang diadaptasi dari python-docx tetapi juga dapat mengekstrak teks dari tautan, header dan footer. Itu juga dapat mengekstrak gambar. 

8
Ankush Shah

Tanpa Memasang python-docx

docx pada dasarnya adalah file Zip dengan beberapa folder dan file di dalamnya. Pada tautan di bawah ini Anda dapat menemukan fungsi sederhana untuk mengekstrak teks dari file docx, tanpa perlu menginstal python-docx dan lxml yang terkadang menimbulkan masalah:

http://etienned.github.io/posts/extract-text-from-Word-docx-simply/

6
imanzabet

Ada dua "generasi" dari python-docx. Generasi awal berakhir dengan versi 0.2.x dan generasi "baru" dimulai pada v0.3.0. Generasi baru adalah penulisan ulang yang berorientasi objek dan berorientasi objek dari bawah. Ini memiliki repositori berbeda yang terletak di sini .

Fungsi opendocx () adalah bagian dari API lawas. Dokumentasi untuk versi baru. Versi lawas tidak memiliki dokumentasi untuk dibicarakan.

Baik membaca maupun menulis hyperlink tidak didukung di versi saat ini. Kemampuan itu ada di peta jalan, dan proyek ini sedang dalam pengembangan aktif. Ternyata menjadi API yang cukup luas karena Word memiliki begitu banyak fungsi. Jadi kita akan membahasnya, tetapi mungkin tidak pada bulan berikutnya kecuali seseorang memutuskan untuk fokus pada aspek itu dan berkontribusi.

4
scanny

anda dapat mencoba ini juga

from docx import Document

document = Document('demo.docx')
for para in document.paragraphs:
    print(para.text)
3
user3732708

Sementara jawaban lain menunjukkan bagaimana kita dapat menggunakan python-docx, berikut ini cara Anda dapat membaca file .docx dengan fungsi inbuild open python:

data = open(file, 'r', encoding="ISO-8859-1").read()

Anda perlu menentukan pengkodean = "ISO-8859-1" dalam argumen. Semoga ini bisa membantu.

0
Rishabh Agrahari

Menggunakan python-docx, seperti yang ditunjukkan oleh @Chinmoy Panda: 

for para in doc.paragraphs:
    fullText.append(para.text)

Namun, para.text akan kehilangan teks dalam w:smarttag (Masalah github yang terkait ada di sini: https://github.com/python-openxml/python-docx/issues/328 ), Anda sebaiknya menggunakan fungsi berikut sebagai gantinya:

def para2text(p):
    rs = p._element.xpath('.//w:t')
    return u" ".join([r.text for r in rs])
0
Xing Shi

Saya memiliki masalah serupa sehingga saya menemukan solusi (menghapus tag hyperlink berkat ekspresi reguler sehingga hanya tag paragraf yang tersisa). Saya memposting solusi ini di https://github.com/python-openxml/python-docx/issues/85 .__ BP

0
user4264327