2016-02-04 4 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 (result) имеет ошибку, не являющуюся строкой. Поэтому мне нужно получить номер из строки и превратить его в целое число, как я могу это сделать.Как извлечь цифры из заданной строки

ответ

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] 

or;

In [19]: result = [int(r) for r in re.findall('\d+', sentence)] 
In [20]: result 
Out[20]: [13] 
Смежные вопросы