Регулярное выражение для поиска пар значений
Как можно разбить строку на пары int|float значений? Пример строки:
1.2*1.0,2*0,0x1,1*3*5,4x2x4
На выходе хочу получить:
[
[1.2,1.0],
[2,0],
[0,1],
[1,3,5],
[4,2,4],
]
Через 2 регекса получилось сделать (сначала бить по запятым, потом в цикле по * или x, а как сделать одним ?
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Без цикла - никак. Да и зачем, и так сам разбор в одну строчку делается.
import re
s = "1.2*1.0,2*0,0x1,1*3*5,4x2x4"
lst = [re.split(r"[*x]", x) for x in s.split(",")]
Все числа приведены к float:
lst = [list(map(float, re.split(r"[*x]", x))) for x in s.split(",")]
Или если нужны именно числа конкретного типа:
lst = [list(map(lambda i: float(i) if "." in i else int(i), re.split(r"[*x]", x))) for x in s.split(",")]