python提取字符串中的指定字符正则表达式
正则表达式提取中文例1:
字符串:'湖南省长沙市岳麓区麓⼭南路麓⼭门'
提取:湖南,长沙
在不⽤正则表达式的情况下:
address = '湖南省长沙市岳麓区麓⼭南路麓⼭门'
address1 = address.split('省')  # ⽤“省”字划分字符串,返回⼀个列表
address2 = address1[1].split('市')  # ⽤“市”字划分address1列表的第⼆个元素,返回⼀个列表
print(address1)  # 输出 ['湖南', '长沙市岳麓区麓⼭南路麓⼭门']
print(address2)  # 输出 ['长沙', '岳麓区麓⼭南路麓⼭门']
data = {
'省份': address1[0],
'城市': address2[0]
}
print(data) # 输出{'省份': '湖南', '城市': '长沙'}
输出结果:
例⼆:
从⼀段⽂字中提取指定两段字符中间的字符
字符串 = ‘’师资⼒量学校现有教职⼯近4000余⼈,其中专任教师1800余⼈,教授、副教授1100余⼈,中国科学院院⼠3名,中国⼯程院院⼠3名,双聘两院院⼠2名,加拿⼤⼯程院院⼠1名,发展中国家科学院院⼠1名,“千⼈计划”53⼈,“万⼈计划”学者13⼈、“长江学者”15⼈,国家杰出青年基⾦获得者21⼈,国务院学位委员会学科评议组成员6⼈,⼊选国家百千万⼈才⼯程(“百千万⼈才⼯程”⼀⼆层次⼈选、新世纪百千万⼈才⼯程国家级⼈选)23⼈、国家创新⼈才推进计划中青年创新领军⼈才2⼈,教育部新世纪优秀⼈才⽀持计划⼊选者134⼈,湖南省“百⼈计划”学者64⼈,湖南省“芙蓉学者奖励计划”特聘教授、讲座教授17⼈,享受政府特殊津贴专家201⼈,国家教学名师4⼈,国家⾃然科学基⾦创新研究体3个,教育部“长江学者与创新团队发展计划”创新团队8个,湖南省⾃然科学基⾦创新研究体11个。(数据截⽌⽇期:2017年01⽉) [31]  “
指定两段字符:“长江学者”与“⼈”,
⽬标字符:中间的数字“15”
正则式:
(.+?)    惰性匹配
\d+    匹配多个数字
import re
s = "师资⼒量学校现有教职⼯近4000余⼈,其中专任教师1800余⼈,教授、副教授1100余⼈,中国科学院院⼠3名,中国⼯程院院⼠3名," \
"双聘两院院⼠2名,加拿⼤⼯程院院⼠1名,发展中国家科学院院⼠1名,“千⼈计划”53⼈,“万⼈计划”学者13⼈、“长江学者”15⼈," \
"国家杰出青年基⾦获得者21⼈,国务院学位委员会学科评议组成员6⼈,⼊选国家百千万⼈才⼯程(“百千万⼈才⼯程”⼀⼆层次⼈选、" \
"新世纪百千万⼈才⼯程国家级⼈选)23⼈、国家创新⼈才推进计划中青年创新领军⼈才2⼈,教育部新世纪优秀⼈才⽀持计划⼊选者134⼈," \
"湖南省“百⼈计划”学者64⼈,湖南省“芙蓉学者奖励计划”特聘教授、讲座教授17⼈,享受政府特殊津贴专家201⼈,国家教学名师4⼈," \
"国家⾃然科学基⾦创新研究体3个,教育部“长江学者与创新团队发展计划”创新团队8个,湖南省⾃然科学基⾦创新研究体11个" \ "。(数据截⽌⽇期:2017年01⽉) [31] "  # 由于字符串过长,在编译器中会要求换⾏,字符“\”为换⾏后⾃动添加的,不影响字符串本⾝n = re.findall(r"长江学者(.+?)⼈",
s)  # 正则表达式匹配长江学者⼈数提取“长江学者”和其后的“⼈”之间的字符,返回⼀个列表
print(n)
num = re.findall('\d+', str(n))  # 正则表达式提取数字,返回⼀个列表
print(num)
num = '长江学者:'+num[0]+'⼈'# 重新构建⼀个字符串
print(num)
运⾏结果: