使用正则表达式

时间:2018-02-12 10:29:49

标签: python regex dictionary pdf

我有一个如下所示的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)

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

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 \ n \ n n \ n A部分:农业和渔业2015年工业SSIC 2010 \ n \ n选择农业和渔业\ n \ n01农业和相关服务活动\ n \ n1111农作物种植,市场园艺和园艺种植\ n \ n11111粮食作物(非水培)\ n01111种植多叶蔬菜和水果蔬菜01111 \ n01112种植蘑菇01112 \ n01113种植根茎作物01113 ......"

2 个答案:

答案 0 :(得分:1)

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

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......')]

希望有帮助。

答案 1 :(得分:0)

您可以尝试以下操作:

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