我從檔案夾中提取了大量 .txt 檔案(使用 glob)。然后,我通過執行以下操作將每個檔案附加到一個名為 MaxDoc 的串列中:
Documents1 = glob.glob('path*.txt')
MaxDoc = []
for file in Documents1:
f = open(file,'r')
MaxDoc.append(f.readlines())
f.close()
現在,我想做的是:該串列中的每個專案都是一個完整的檔案。每個檔案都有一個部分顯示“最后修訂日期:mm/dd/yyyy”和“修訂號:xx”
這是包含資訊的檔案部分的快照:

我一直在嘗試查看是否可以遍歷串列并使用正則運算式來查找字串并提取資訊。提取后,我需要將其保存為變數,因為我需要洗掉此檔案的所有頂部(檔案的后面部分是一個表格,我想將其轉換為 df)。TIA 的任何建議!
編輯:
我已使用此正則運算式模式僅對以下文本檔案之一進行測驗:
handle = open('path','r').read()
Date_of_Last_Rev = re.findall(r'Date\sOf\sLast\sRevision:\s(\d\d\/\d\d\/\d\d\d\d)',handle)
Revision_No: = re.findall(r'Revision\sNo.:(\s\d\d)', handle, re.S)
output: Date_of_Last_Rev: ['12/27/2021']
output: Revision_No: ['18']
所以正則運算式模式有效,它能夠識別正確的資訊。但是,我仍然無法讓它遍歷 MaxDoc 串列中的每個檔案。
我試過這個:
for item in MaxDoc:
Date_of_Last_Rev =
re.findall(r'Date\sOf\sLast\sRevision:\s(\d\d\/\d\d\/\d\d\d\d)',MaxDoc)
Revision_No: = re.findall(r'Revision\sNo.:(\s\d\d)', MaxDoc, re.S)
還有這個:
for line, item in MaxDoc:
Date_of_Last_Rev =
re.findall(r'Date\sOf\sLast\sRevision:\s(\d\d\/\d\d\/\d\d\d\d)',MaxDoc)
Revision_No: = re.findall(r'Revision\sNo.:(\s\d\d)', MaxDoc, re.S)
我要么得到一個錯誤:'expected string or bytes-like object'(第一個例子)或空串列(第二個例子)
根據要求,以下是文本示例:
“根據 | 美國勞工部
《服務合同法》| 就業標準管理
根據勞工部長的指示進行工資確定登記 | 工資和工時劃分
| 華盛頓特區 20210
| | | | 工資確定編號:2015-4001 Daniel W.西姆斯分部 | 修訂號:18 董事工資確定| 上次修訂日期:2021 年 12 月 27 日
| _____ 注:受《服務合同法》約束的合同通常需要至少支付行政命令要求的適用最低工資率14026 或行政命令 13658。
uj5u.com熱心網友回復:
如果串列中的每一項都是整個檔案(我假設是一個字串),那么您可以將正則運算式與多字串一起使用。
我沒有您的文本(問題中未給出),但我將向您展示一個帶有其他文本的示例,您可以將其用作您自己的代碼的開始。
import re
txt='''
This is a part text
With multi line
It could be a text
document.
Revision No.: 18
Date: 12/27/2021
Other text
table,table,table
table,talbe,table
'''
reg_revision_no = re.compile(r'(Revision\sNo.:\s \d )')
reg_date = re.compile(r'(Date:\s \d2\/\d{2}\/\d{4})')
files = [txt, txt]
for file in files:
revision_no = reg_revision_no.search(file, re.M).group()
date = reg_date.search(file, re.M).group()
print(f"Revision No.: {revision_no}\nData: {date}")
輸出:
Revision No.: Revision No.: 18
Data: Date: 12/27/2021
Revision No.: Revision No.: 18
Data: Date: 12/27/2021
uj5u.com熱心網友回復:
您可以只查找關鍵字,然后僅提取內容:
import re
txt = '''
This is a part text
With multi line
It could be a text
document.
Revision No.: 18
Date: 12/27/2021
Other text
table,table,table
table,table,table
'''
results = re.findall(r'Revision No\.:\s*(\d ).*Date:\s*([\d\/] )', txt, re.S)
for i in results:
print('Revision:', i[0])
print('Date:', i[1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413413.html
標籤:
上一篇:將集合串列轉換為列
下一篇:如何將1h47m轉換為時間?
