我需要从wikipedia.org获取一些数据。 我有字符串a ='4 200 000+篇文章',我需要得到int b = 4200000。 我已经通过BS4获得了这个字符串,并且我尝试通过int(a)进行简单的解析,但它确实如此 很明显,这不起作用。 你能帮帮我吗?
答案 0 :(得分:1)
你需要一个正则表达式来从文本中获取数字:
import re
int_numbers = re.compile('\d[\d ]*')
def extract_integer(text):
value_match = int_numbers.search(text)
if value_match:
try:
return int(value_match.group().replace(' ', ''))
except ValueError:
# failed to create an int, ignore
pass
模式匹配一个数字后跟0或更多的数字或空格。
演示:
>>> a = '4 200 000+ articles'
>>> extract_integer(a)
4200000
如果输入文本中需要所有这样的数字,请使用.finditer()
和生成器:
def extract_integers(text):
for value_match in int_numbers.finditer(text):
try:
yield int(value_match.group().replace(' ', ''))
except ValueError:
# failed to create an int, ignore
pass
演示:
>>> for i in extract_integers('4 300 123 times 42'):
... print i
...
4300123
42
>>> list(extract_integers('4 300 123 times 42'))
[4300123, 42]
答案 1 :(得分:0)
如果您只想删除除数字之外的所有内容,则可以使用以下内容:
>>> x = "500000+"
>>> import string
>>> all=string.maketrans('','')
>>> nodigs=all.translate(all, string.digits)
>>> x.translate(all, nodigs)
除了数字0-9外,这将删除字符串中的所有字符。
答案 2 :(得分:0)
>>> import re
>>> a = re.findall(r'[\d ]+', '4 200 000+ articles' )
>>> print a
['4 200 000', ' ']
>>> [x.replace(' ','') for x in a if x.strip()]
['4200000']