我想从一个也包含数字的字符串中提取字符串 - python

时间:2013-12-17 10:22:59

标签: python

我有一个字符串:

"23423 NewYork"

我只想要NewYork。我可以将它切成碎片,但顺序可以不同,如"newyork 23244"等。

从字符串中提取字符串的最佳方法是什么?

4 个答案:

答案 0 :(得分:3)

>>> 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']

答案 1 :(得分:2)

import re
s = "23423 NewYork"
m = re.findall('NewYork', s)

罗?

import re
s = "23423 NewYork"
m = re.findall(r'[^\W\d]+', s)

更一般的案例

答案 2 :(得分:1)

from re import sub

s= "23423 NewYork"
sub('\d',"",s).strip()

这应该做你需要的。

\ d 删除字符串中的所有数字,strip()应删除任何多余的空格。

答案 3 :(得分:1)

您也可以使用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)