我寫了這個功能,蟒蛇 - 正則表達式 - 需要字符串,如果在它裏面沒有逗號和第二空間
def my_func(s):
wordlist = ('unit','room','lot')
if if any(re.match(r'^'+ word + r'\b' + r'.*$', s.lower()) for word in wordlist) and any(i.isdigit() for i in s.lower())::
if ',' in s:
out = re.findall(r"(.*),", s) #Getting everything before comma
return out[0]
else:
out = re.findall(r"([^\s]*\s[^\s]*)", s) #Getting everything before second space.
return out[0]
我的測試數據和預期輸出
Unity 11 Lane. --> None
Unit 11 queen street --> Unit 11
Unit 7, king street --> Unit 7
Lot 12 --> Lot 12
Unit street --> None
我在這裏的邏輯是
- 如果字符串中有',',則取第一個逗號。
- 如果沒有逗號,則佔用第二個空格
- 如果字符串不是以單詞表中的任何內容開始,請不要帶出任何內容。
- 帶上所有如果沒有第二個空格或逗號。
其他一切工作正常,如何捕捉地塊12這裏說,如果字符串匹配的詞表,也沒有「」沒有第二空間,然後把它全部
如果你希望你的規則是'取第一個逗號,如果字符串中有',',那麼Lot 12 - > Lot 12'和'Unit street - > None'是互斥的。如果沒有逗號,則佔用第二個空間。 「街道」符合這些條件。這些比賽應該只有數字? – zwer
是的,這就是爲什麼我已經在第一個條件添加了這個 - 任何(i.isdigit()爲我在s.lower()) –