re - выделить число из строки
Я написал небольшой код. Моя цель — вывести пользователя, когда он введет число, например 5,5 или 5,5, вывести Y на консоль. Теперь, если пользователь вводит число, например 123.3 у меня работает код. Но при вводе числа типа 123,3 выдает ошибку. Можно ли это исправить?
import re
pattern = '\d{1,7}\.\d'
user = input()
if (re.search(pattern, user)):
a = float(user)
print(a, type(a))
print("Y")
else:
print("N")
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Поправьте регулярное выражение так, чтобы оно пропускало числа с запятой в качестве символа десятичной дроби, а также захватите цифры до и после него в отдельные подмаски, а затем используйте эти два значения для парсинга числа:
import re
pattern = r'^(\d{1,7})[.,](\d)$'
user = '123,3'
m = re.search(pattern, user)
if m:
a = float(f'{m.group(1)}.{m.group(2)}')
print(a, type(a))
print("Y")
else:
print("N")
См. пример работы кода.
^- начало строки(\d{1,7})- захватывающая подмаска №1 (m.group(1)): от одной до семи цифр[.,]- точка или запятая(\d)- захватывающая подмаска №2 (m.group(2)): одна цифра$- конец строки.