提取文本直到到达第一个数字 - 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)
假设您有以下几行:
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)