[英]Split string between characters with Python regex
我正在嘗試拆分字符串:
> s = Ladegårdsvej 8B7100 Vejle
正則表達式:
[street,zip,city] = ["Ladegårdsvej 8B", "7100", "Vejle"]
s
變化很大,唯一確定的部分是拉鏈中總有4位數字,之后是空格。 因此,我的想法是在4位數字和空格上“從右邊匹配”,以指示字符串應該在字符串中的該點處拆分。
目前我能夠像這樣得到street
和city
:
> print re.split(re.compile(r"[0-9]{4}\s"), s)
["Ladegårdsvej 8B", "Vejle"]
我將如何根據需要分割s
; 特別是,如何在street
和zip
之間的字符串中間做到這一點?
您可以使用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.