簡體   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