我有字符串,包含地址
str_addr = '300114 г Тула, Тульская область, Ленинский р-он, п РАССВЕТ, 75, к.34, тульская обл, Краснодарский край, гагарина 38, республика Хакасия'
我需要提取
Тульская, тульская, Краснодарский, Хакасия
我试着用
re.findall(r"\b[А-Я]\w*\s+(?:[кК]рай|[оО](бласть|бл))|\b[рР](еспублика|есп)\s+[А-Я]\w*", str_addr)
但我得到一张空名单
我该怎么修
你可以用
参见Python 3 demo
细节
\b([А-Яа-яёЁ][^\W\d_]*)\s+(?:[кК]рай|[оО]бл(?:асть)?)
:\b
-词边界([А-Яа-яёЁ][^\W\d_]*)
-第1组:俄语字母后跟任何0+个字母\s+
-1+空格(?:[кК]рай|[оО]бл(?:асть)?)
-Край
,край
,область
,Область
,обл
,Обл
|
-或\b[рР]есп(?:ублика)?\s+([А-Яа-яёЁ][^\W\d_]*)
:\b
-词边界[рР]есп(?:ублика)?
-Республика
/Респ
有变化\s+
-1+空格([А-Яа-яёЁ][^\W\d_]*)
-第1组:俄语字母后跟任何0+个字母|
-或([мМ]осква|[сС]анкт-Петербург)
-第3组:Москва
或Санкт-Петербург
李>["".join(x) for x in res]
列表理解用于将空值放到返回的元组列表中相关问题 更多 >
编程相关推荐