Я пытаюсь разобрать текстовый файл и извлечь из него некоторые целые числа. Каждая строка в моем текстовом файле этого формата:Проблемы с использованием re.findall() в python
а и б
где представляет собой целое число и Ь может быть поплавок или целое
например. '4 и 10.2356' или '400 и 25'
Мне нужно извлечь оба a и b. Я пытаюсь использовать re.findall(), чтобы сделать это:
print re.findall("\d+", txt)[0] #extract a
#Extract b
try:
print float(re.findall("\d+.\d+", txt)[1])
except IndexError:
print float(re.findall("\d+.\d+", txt)[0])
здесь TXT представляет собой одну строку из файла. Причина блока try и except следующая:
если a - целое число в одну цифру, например. 4, часть запроса просто возвращает b. Однако, если a не является целым числом, например. 400, часть запроса возвращает код a и b. Я нашел это странным.
Однако я не знаю, как изменить приведенный выше код, чтобы извлечь b, когда это целое число. Я попробовал попробовать еще одну попытку, кроме bock, в существующем блоке, но это дало мне странные результаты (в некоторых случаях a и b были объединены). Пожалуйста, помогите мне.
Кроме того, может кто-нибудь скажет мне разницу между \ d + и \ d +. \ D + и почему \ d +. \ D + возвращает 400, а не 4, даже если оба являются целыми числами.
Большое спасибо! – foobar