我有一组数据比如
Out[159]:
id id2 类别 Unnamed: 3 名称
0 6622 3 地方企业 NaN 北京金软瑞彩科技有限公司
1 6622 4 地方企业 NaN 江苏省邮电规划设计院
2 6622 5 地方政府 NaN 江苏省科技厅
3 6622 6 学校 NaN 江苏省生产力培训学院
4 6622 8 地方企业 NaN 北京江天彩娱通讯有限公司
5 5543 1 学校 NaN 重庆交通学院
6 5543 3 地方企业 NaN 武汉长江轮船有限公司
7 5543 5 地方企业 NaN 武汉太和集团
8 5543 6 地方企业 NaN 杭州卓尚服饰有限公司
9 5708 1 研究机构 NaN 新疆维吾尔自治区特种设备检验研究院
然后我需要机构名称里面的地域“北京”,“江苏省”,‘新疆维吾尔自治区’给去掉。
然后我有一个列表包含了地域名字:
Out[160]:
['湖南', '湖北','广东', '广西', '河南', '河北', '山东', '山西', '江苏', '浙江', '江西',甘肃', '陕西', '内蒙古', '北京', '上海','天津']
因为机构名有的带“省”“市”“XX族自治区”这些的有的没带,我想写个正则表达式来找到这些。
我的想法是写一个类似这种的正则表达式是的可以找到“地区名字+省/市/x族自治区”这样的模式:
p2 = re.compile(r"(?=("+'|'.join(pro)+r")(.{0,5})(省|区$))")
但是基本都不成功,本人新手实在苦恼请问大佬这个正则表达式该怎么写呢?万分感谢!!
pro = ['湖南', '湖北','广东', '广西', '河南', '河北', '山东', '山西', '江苏', '浙江', '江西','甘肃', '陕西', '内蒙古', '北京', '上海','天津']
pattern =r"(?<=("+'|'.join(pro)+r").{0,5}?[省|区]).*"
#也就是 (?<=(湖南|湖北|广东|广西|河南|河北|山东|山西|江苏|浙江|江西|甘肃|陕西|内蒙古|北京|上海|天津).{0,5}?[省|区]).*