繁体   English   中英

使用Python正则表达式在字符之间拆分字符串

[英]Split string between characters with Python regex

我正在尝试拆分字符串:

> s = Ladegårdsvej 8B7100 Vejle

正则表达式:

[street,zip,city] = ["Ladegårdsvej 8B", "7100", "Vejle"]

s变化很大,唯一确定的部分是拉链中总有4位数字,之后是空格。 因此,我的想法是在4位数字和空格上“从右边匹配”,以指示字符串应该在字符串中的该点处拆分。

目前我能够像这样得到streetcity

> print re.split(re.compile(r"[0-9]{4}\s"), s)
["Ladegårdsvej 8B", "Vejle"]

我将如何根据需要分割s ; 特别是,如何在streetzip之间的字符串中间做到这一点?

您可以使用re.split ,但将四个数字作为捕获组:

>>> s = "Ladegårdsvej 8B7100 Vejle"
>>> re.split(r"(\d{4}) ", s)
['Ladegårdsvej 8B', '7100', 'Vejle']

文档 (强调我的)

按模式的出现拆分字符串。 如果在模式中使用捕获括号,则模式中所有组的文本也将作为结果列表的一部分返回。 如果maxsplit非零,则最多发生maxsplit拆分,并且字符串的其余部分将作为列表的最后一个元素返回。

一旦你有街道,获得拉链是微不足道的:

zip = s[len(street):len(street)+4]

这是您的问题的解决方案。

# -*- coding: utf-8 -*-
import re
st="Ladegårdsvej 8B7100 Vejle"
reg=r'([0-9]{4})'
rep=re.split(reg,st)
print rep

RasmusP_963先生提供的其他测试用例的解决方案。

# -*- coding: utf-8 -*-
import re
st="Birkevej 8371900 Roskilde"
print re.split(r"([0-9]{4}) ",st)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM