我需要在学位(MSC,BSc,…)上拆分一个字符串,并在第0列保留名称和标题,在第1列保留地址。注意结尾的国家代码BS
与标题匹配
请在下面找到一些示例数据:
Phillipp Shuster MSc Grolmanstraße 6 28195 Bremen Bahnhofsvorstadt DE
Eric Jager BSc Mohrenstrasse 29 72362 Nusplingen DE
Nykee Peters BS Taylor Street, Duncan Town BS
我想完成如下:
Phillipp Shuster MSc | Grolmanstraße 6 28195 Bremen Bahnhofsvorstadt DE
Eric Jager BSc | Mohrenstrasse 29 72362 Nusplingen DE
Nykee Peters BS | Taylor Street, Duncan Town BS
我试过了,但这会将标题添加到地址(不正确)。你知道吗
splitted=re.split("\s(?=(?:msc|bsc|bs)[^$])",participants, flags=re.IGNORECASE)
Phillipp Shuster | Msc Grolmanstraße 6 28195 Bremen Bahnhofsvorstadt DE
Eric Jager | BSc Mohrenstrasse 29 72362 Nusplingen DE
Nykee Peters | BS Taylor Street, Duncan Town BS
我建议采用
re.subn
方法,而不是拆分:输出:
代替
split
,您可以在findall
中使用带有2个捕获组的简单正则表达式:RegEx Demo
正则表达式描述:
(?i)
:忽略大小写模式^
:开始(.*\s[BM]Sc?)
:匹配0+个字符,直到捕获组1中的BSc
或BS
或MS
或Msc
\s+
:匹配1+个空格(.+)
:匹配1+个字符,直到第二个捕获组结束$
:结束你可以使用这个伴侣
(?<=\bmsc)
-匹配msc
。你知道吗(?<=\bbsc)
-匹配bsc
。你知道吗(?<=\bbs)
-匹配bs
。你知道吗\s
-匹配空格。你知道吗Demo
相关问题 更多 >
编程相关推荐