提取文本直到到达第一个数字 - Python

Extracting text until reaching the 1st digit - Python

假设您有以下几行:

United States of America 1999 - some text here
United Kingdom 2001.1 - some more text here
Russia - Some extra text here

三行不同(有些是整数,有些是浮点数,第三行什么都没有)。国家名称的长度也不同。

如何只提取或打印国家名称?

您可以使用 itertools.takewhile 继续抓取字符,直到遇到第一个非字母 (alpha) 或 space,然后重新加入字符串

from itertools import takewhile
def first_text(s):
    return ''.join(takewhile(lambda i: i.isalpha() or i.isspace(), s)).strip()

例如

>>> first_text('United States of America 1999 - some text here')
'United States of America'
>>> first_text('United Kingdom 2001.1 - some more text here')
'United Kingdom'
>>> first_text('Russia - Some extra text here')
'Russia'

如果总有 - 那么您可以在 -

上拆分
>>> import re
>>> data = "United States of America 1999 - some text here"
>>>  re.sub("\d+.?\d*", '', data.split("-")[0]).strip()
'United States of America'

我们也可以只使用re.sub:

re.sub(' ?[0-9]*\.?[0-9]* -.*', '', data)