我有一個字符串:我想從還包含數字的字符串中提取字符串 - 蟒蛇
"23423 NewYork"
我只想NewYork
如此。我可以把它切成塊,但訂單可以是不同的,如"newyork 23244"
等。
什麼是從字符串中提取字符串,其中也有數字的最佳方式是什麼?
我有一個字符串:我想從還包含數字的字符串中提取字符串 - 蟒蛇
"23423 NewYork"
我只想NewYork
如此。我可以把它切成塊,但訂單可以是不同的,如"newyork 23244"
等。
什麼是從字符串中提取字符串,其中也有數字的最佳方式是什麼?
>>> s = "23423 NewYork"
>>> [sub for sub in s.split() if all(c.isalpha() for c in sub)]
['NewYork']
>>> s = "NewYork 23423"
>>> [sub for sub in s.split() if all(c.isalpha() for c in sub)]
['NewYork']
我最喜歡這個,但我也忍不住在這裏放置itertools解決方案。 –
看起來不錯,這也是做「新6757約克」嗎? – doniyor
@ doniyor:喲!給它一個鏡頭;] – inspectorG4dget
import re
s = "23423 NewYork"
m = re.findall('NewYork', s)
羅?
import re
s = "23423 NewYork"
m = re.findall(r'[^\W\d]+', s)
更一般的情況
from re import sub
s= "23423 NewYork"
sub('\d',"",s).strip()
這應該做你所需要的。
\ d刪除字符串中的所有數字,strip()應刪除任何多餘的空格。
這似乎很好 – doniyor
你也可以嘗試使用在以下itertools
:
from itertools import takewhile, dropwhile
a = "23423 NewYork"
b = "NewYork 23423"
def finder(s):
if s[0].isdigit():
return "".join(dropwhile(lambda x: x.isdigit() or x.isspace(), s))
else:
return "".join(takewhile(lambda x: not x.isdigit() or x.isspace(), s))
if __name__ == '__main__':
print finder(a)
print finder(b)
你能提供什麼樣的輸入可能看起來像和輸出應該是什麼更好的規範?如果輸入是「紐約1234」呢?如果是「紐約」呢?如果它是「New 1234 York」呢?如果這是哈姆雷特的完整文本呢? – user2357112
它總是分成兩部分,還是可以像「232紐約123131城市」混合? –
它也可以是「new 2635 york」或「new york」 – doniyor