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

Ras*_*963 3 python regex string split

我正在尝试拆分字符串:

> s = Ladegårdsvej 8B7100 Vejle
Run Code Online (Sandbox Code Playgroud)

正则表达式:

[street,zip,city] = ["Ladegårdsvej 8B", "7100", "Vejle"]
Run Code Online (Sandbox Code Playgroud)

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

目前我能够得到streetcity喜欢这样:

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

我将如何s根据需要进行分裂; 特别是,如何在数字中间的字符串中间streetzip

tob*_*s_k 8

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

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

文档(强调我的)

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