記事ディレクトリ
1.説明:
この記事の要件は、テキストやExcelのテーブル情報など、docxドキュメントのデータ情報を抽出することです。
検索の朝の後、私はいくつかのテキストを見つけ、それを必要なコードにソートしました。
次に、データを抽出します
モジュールをインストールします。
ここで直接インストールを注文できます。
pip install python-docx
1.テキストコンテンツを抽出します。
ここでは、元の各行のみを大きな文字列として保存します。
ナンセンスではありません。コードにアクセスしてください:
import docx
def extract_docx_text(docFile):
# 获取文档对象
document = docx.Document(docFile)
# 完整的text:
docx_text = ""
for para in document.paragraphs:
docx_text += para.text + '\n'
return docx_text
if __name__ == '__main__':
docFile = 'W020200731560335069483.docx'
docx_text = extract_docx_text(docFile)
print("docx_text", docx_text)
効果画像:
各行の内容を区別するための後続のニーズを容易にするために、各行の内容に従って保存するか、または大きな文字列スタイルを元の行として保存するか。
2. Excelテーブルの内容を抽出します。
ここですべてのテーブルを読み、テーブルの列名をキー、値をリストとして、各テーブルに従ってjson形式を作成します。
1)、リストとしてのデータの各列
from docx import Document
def extract_table_data(tables_i):
columns = tables_i.columns
tables_i_json = {
}
# 列标题
columns_name_json = {
} # 用来下面表格的行做铺垫使用
for columns_i in range(len(columns)):
tables_i_json[tables_i.cell(0, columns_i).text] = []
columns_name_json[columns_i] = tables_i.cell(0, columns_i).text
for row_i in range(1, len(tables_i.rows)): # 从表格第二行开始循环读取表格数据
for columns_i in range(len(columns)):
tables_i_json[columns_name_json[columns_i]].append(tables_i.cell(row_i, columns_i).text)
return tables_i_json
def extract_docx_excel_data(docFile):
document = Document(docFile) # 读入文件
# print("document",dir(document))
tables = document.tables # 获取文件中的表格集
# print("dir", dir(document))
# print("tables", tables)
tables_json = []
for tables_i in tables:
tables_i_json = extract_table_data(tables_i)
tables_json.append(tables_i_json)
print("tables_json",tables_json)
return tables_json
if __name__ == '__main__':
docFile = 'W020200731560335069483.docx'
tables_json = extract_docx_excel_data(docFile)
2)1行に1つのjson:
from docx import Document
def extract_table_data(tables_i):
columns = tables_i.columns
"""每列作为列表"""
# tables_i_json = {}
# # 列标题
# columns_name_json = {} # 用来下面表格的行做铺垫使用
# for columns_i in range(len(columns)):
# tables_i_json[tables_i.cell(0, columns_i).text] = []
# columns_name_json[columns_i] = tables_i.cell(0, columns_i).text
#
# for row_i in range(1, len(tables_i.rows)): # 从表格第二行开始循环读取表格数据
# for columns_i in range(len(columns)):
# tables_i_json[columns_name_json[columns_i]].append(tables_i.cell(row_i, columns_i).text)
"""每行一个json"""
table_data = []
# # 列标题
head_name = []
for columns_i in range(len(columns)):
head_name.append(tables_i.cell(0, columns_i).text)
for row_i in range(1, len(tables_i.rows)): # 从表格第二行开始循环读取表格数据
row_json = {
}
for columns_i in range(len(columns)):
row_json[head_name[columns_i]] = tables_i.cell(row_i, columns_i).text
table_data.append(row_json)
return table_data
def extract_docx_excel_data(docFile):
document = Document(docFile) # 读入文件
# print("document",dir(document))
tables = document.tables # 获取文件中的表格集
# print("dir", dir(document))
# print("tables", tables)
tables_json = []
for tables_i in tables:
tables_i_json = extract_table_data(tables_i)
tables_json.append(tables_i_json)
print("tables_json",tables_json)
return tables_json
if __name__ == '__main__':
docFile = 'W020200731560335069483.docx'
tables_json = extract_docx_excel_data(docFile)
問題を解決するには、コードをアップロードして、独自のdocFileファイルパスを変更するだけです。
参考研究のためのいくつかの記事:
https://zhuanlan.zhihu.com/p/55963556
https://www.cnblogs.com/klb561/p/9982937.html
https://blog.csdn.net/weixin_40449300/article/details/79143971
https:/ /blog.csdn.net/woshisangsang/article/details/75221723
https://zhuanlan.zhihu.com/p/45997055