Анализ записи числа

Хороший пример регулярного выражения можно найти в модуле fpformat. Это регулярное выражение позволяет разобрать запись числа (в том виде, в каком числовой литерал принято записывать в Python):

decoder = re.compile(r'^([-+]?)0*(d*)((?:.d*)?)(([eE][-+]?d+)?)$')

# Следующие части числового литерала выделяются с помощью групп:

# — весь литерал

# 1 — начальный знак или пусто

# 2 — цифры слева от точки

# 3 — дробная часть (пустая или начинается с точки)

# 4 — показатель (пустой или начинается с 'e' или 'E')

Например:

import re

decoder = re.compile(r'^([-+]?)0*(d*)((?:.d*)?)((?:[eE][-+]?d+)?)$')

print decoder.match("12.234").groups()

print decoder.match(" — 0.23e–7").groups()

print decoder.match("1e10").groups()

Получим

('', '12', '.234', '')

('-', '', '.23', 'e–7')

('', '1', '', 'e10')

Больше книг — больше знаний!

Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ