2013-02-12 2 views
1

Ниже приведена PythonКак захватить число, зажатое между запятыми?

фрагментов пользовательского

line = '3520005,"Toronto (Ont.)",C ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1\r\n', и я хочу, чтобы иметь возможность получить первый номер зажатого между двумя запятыми, которые в этом случае будут ,2503281,

Однако то, что я придумал, кажется, не правильно работать: m = re.search("\,([0-9])*\,",line) сохраняет только последнюю цифру.

+0

Я думаю, вам нужно переместить '*' внутри группы захвата, например: '', (0-9) *), '' –

+0

, вероятно, вы должны использовать модуль 'csv', потому что он может содержать больше' , 'внутри кавычек – JBernardo

ответ

3

Здесь не является регулярным выражением решения:

>>> [item for item in line.split(',')[1:] if item.isdigit()][0] 
'2503281' 
+0

приятное решение! 1 – Vor

+0

Вопрос не уточняет, но помните, что это работает только для целых чисел, которые не все числа в этом списке. Не пытайтесь использовать это, чтобы выбрать третье число, '0,9', так как вы получите' 1040597' вместо –

+0

Pythonic. хороший! – Louis93

3

Звездочка должна идти внутри скобок:

`",([0-9]*)," 

В противном случае вы только захватить один из цифр. Вам также не нужны обратные косые черты перед запятыми, но это не имеет значения.

Вы также можете использовать + вместо *, чтобы гарантировать, что есть по крайней мере одна цифра, или даже установить мин/макс ограничение на цифры с помощью {}.

0

Учтите, что с помощью регулярных выражений для разбора значений, разделенных запятых чревато оплошностью, хрупкостью и потенциальных ошибками. Если вы можете принудить это к чему-то, что может сделать модуль csv - вам будет лучше.

Тем не менее, это работает:

import re 

st='''line = '3520005,"Toronto (Ont.)", 
C ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1\r\n''' 

print re.findall(r"(\d+\.?\d*)",st) 

печатает:

['3520005', '2503281', '2481494', '0.9', '1040597', '979330', '630.1763', '3972.4', '1'] 

Here является регулярным выражением объяснения.

Смежные вопросы