我正在尝试从 txt 文件中提取一些内容(来自 pdf 转换)。 您可以注意到标签后面或 page_number 之前有空格(或没有空格),有时,没有空格 page_number 和 X.Y.Z 代码之间 这是一个示例:
> Summary
30.1.3.1. Boite à eau................................................................................................................................................. 29
30.1.3.2. Descentes d’eaux pluviales en façades ....................................................................................................30
30.1.3.3. Lanterneau de désenfumage.....................................................................................................................30 30.1.3.4. Etanchéité résine.......................................................................................................................................31
稍后在同一个文档中:
摘要的结构是:
> X.Y.Z. Label ................................... Page_number
在同一份文件中我们可以看到:
> X.Y.Z. Label : Description etc ......
我的用例是将 X.Y.Z 标签放入 python 字典中作为仅来自摘要的键并将描述与此相关联。 我尝试了这个正则表达式,这是我能得到的最好结果,但它不是最好的:
(\d+[.])(.*)?[.]*\s*\d+
我的问题是关于点管理、标签提取和 失踪了。
你能帮帮我吗?
re.findall
和(\d+(?:\.\d+)*\.) (.*?)\.* ?(\d+)
:
import re
txt = '''Summary
30.1.3.1. Boite à eau................................................................................................................................................. 29
30.1.3.2. Descentes d’eaux pluviales en façades ....................................................................................................30
30.1.3.3. Lanterneau de désenfumage.....................................................................................................................30 30.1.3.4. Etanchéité résine.......................................................................................................................................31 '''
out = re.findall(r'(\d+(?:\.\d+)*\.) (.*?)\.* ?(\d+)', txt)
out2 = {k: t for k, *t in out}
输出:
# out
[('30.1.3.1.', 'Boite à eau', '29'),
('30.1.3.2.', 'Descentes d’eaux pluviales en façades ', '30'),
('30.1.3.3.', 'Lanterneau de désenfumage', '30'),
('30.1.3.4.', 'Etanchéité résine', '31')]
# out2
{'30.1.3.1.': ['Boite à eau', '29'],
'30.1.3.2.': ['Descentes d’eaux pluviales en façades ', '30'],
'30.1.3.3.': ['Lanterneau de désenfumage', '30'],
'30.1.3.4.': ['Etanchéité résine', '31']}