当前位置: 代码迷 >> python >> 使用正则表达式从PDF中提取文本
  详细解决方案

使用正则表达式从PDF中提取文本

热度:54   发布时间:2023-07-16 10:48:11.0

我有一个看起来像这样的pdf文件:

我想将编号的项目提取到字典中:

output = {'01': 'Agriculture and related service activities',
          '011': 'Growing crops, market gardening and horticulture'...}

目前,我正在使用tika从pdf中提取文本。 但是我现在需要一个正则表达式来从内容中提取编号的项目。 我该怎么做呢?

from tika import parser
raw = parser.from_file(path)
text = raw['content']
regex = ???
match = re.findall(regex, text, flags=re.DOTALL)

文本变量包含文档的文本。 看起来像这样:

U“\\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n统计新加坡-新加坡标准工业分类,2015 \\ n \\ n \\ nA节:农业和渔业\\ n \\ nSSIC 2015行业SSIC 2010 \\ n \\ n农业与渔业\\ n \\ n01农业及相关服务活动\\ n \\ n011作物,市场园艺和园艺的种植\\ n \\ n0111食品作物的种植(非-Hydroponics)\\ n01111种植带叶蔬菜和水果蔬菜01111 \\ n01112种植蘑菇01112 \\ n01113种植块根作物01113……”

'^'在正则表达式的前面可能不起作用。 试试下面的代码。

regex = '([\d]+).+?([a-zA-Z].+)'#(\d.+|$)'
match = re.findall(regex, s)
print(match)

Output : [('2015', 'Industry SSIC 2010'),
 ('01', 'AGRICULTURE AND RELATED SERVICE ACTIVITIES'),
 ('011', 'GROWING OF CROPS, MARKET GARDENING AND HORTICULTURE'),
 ('0111', 'Growing of Food Crops (Non-Hydroponics)'),
 ('01111', 'Growing of leafy and fruit vegetables 01111'),
 ('01112', 'Growing of mushrooms 01112'),
 ('01113', 'Growing of root crops 01113......')]

希望能帮助到你。

您可以尝试以下方法:

regex = ^([\d]+).+?([a-zA-Z].+?)(\d.+|$)