2016-02-04 99 views
0
def parse_distance(string): 
    # write the pattern 
    pp = re.compile("\d+") 
    result = pp.search(string) 
    if True: 
     # turn the result to an integer and return it 
     dist = int(result) 
     return dist 
    else: 
     return None 

parse_distance("LaMarcus Aldridge misses 13-foot two point shot") 

我需要从上面显示的字符串中获得13,它给了我错误,int(结果)有错误,不是字符串。所以我需要从字符串中获取数字并将其转换为整数,我该如何去做,谢谢。我怎样才能从给定的字符串提取数字

回答

3

您需要从group()得到匹配的数字:

def parse_distance(string): 
    pp = re.compile(r"(\d+)-foot") 
    match = pp.search(string) 
    return int(match.group(1)) if match else None 

一些用法示例:

>>> print(parse_distance("LaMarcus Aldridge misses 13-foot two point shot")) 
13 
>>> print(parse_distance("LaMarcus Aldridge misses 1300-foot two point shot")) 
1300 
>>> print(parse_distance("No digits")) 
None 
+0

即使没有模式中的捕获组,您也可以使用group()或group(0)来获得全文匹配。 – Blckknght

+0

@Blckknght好点,更新。谢谢。 – alecxe

+0

非常感谢。 – user5372470

0

似乎想从给定的字符串中提取数字;

import re 

In [14]: sentence = "LaMarcus Aldridge misses 13-foot two point shot" 
In [15]: result = re.findall('\d+', sentence) 
In [16]: print result 
['13'] 
In [17]: [int(number) for number in result ] 
Out[17]: [13] 

或;

In [19]: result = [int(r) for r in re.findall('\d+', sentence)] 
In [20]: result 
Out[20]: [13] 
相关问题