我有一個包含城市名稱和居住在其中的人數的字串。我只需要使用正則運算式匹配城市名稱
city = "New York - 8 468 000 Los Angeles - 3 849 000 Berlin - 3 645 000"
試過這個
[a-zA-Z] (?:[\s-][a-zA-Z] )*$
但它回傳“無”
uj5u.com熱心網友回復:
如果您希望將所有城市作為一個字串,您可以使用它[a-zA-Z]
來忽略所有數字并回傳一個字串:
cities = " ".join(re.findall("[a-zA-Z] ", city))
回傳:
'New York Los Angeles Berlin'
否則,如果您希望將它們分開,我將-
先拆分,然后以串列理解的方式使用與上述相同的方法回傳:
cities = [" ".join(re.findall("[a-zA-Z] ",x)) for x in city.split('-')[:-1]
回傳:
['New York','Los Angeles','Berlin']
uj5u.com熱心網友回復:
嘗試這個:
[a-zA-Z] ?[a-zA-Z] (?= *-)
請參閱正則運算式演示。
uj5u.com熱心網友回復:
嘗試:
([^-] ?)\s*-\s*([\d\s] )
正則運算式演示。
import re
city = "New York - 8 468 000 Los Angeles - 3 849 000 Berlin - 3 645 000"
pat = re.compile(r"([^-] ?)\s*-\s*([\d\s] )")
for c, n in pat.findall(city):
print(c, int(n.replace(" ", "")))
印刷:
New York 8468000
Los Angeles 3849000
Berlin 3645000
編輯:如果您不需要數字:
import re
city = "New York - 8 468 000 Los Angeles - 3 849 000 Berlin - 3 645 000"
pat = re.compile(r"([^-] ?)\s*-\s*[\d\s] ")
for c in pat.findall(city):
print(c)
印刷:
New York
Los Angeles
Berlin
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532658.html