«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как можно использовать регулярные выражения для извлечения значений с плавающей запятой из строк?

Как можно использовать регулярные выражения для извлечения значений с плавающей запятой из строк?

Опубликовано 9 ноября 2024 г.
Просматривать:624

How Can Regular Expressions Be Used to Extract Floating-Point Values from Strings?

Извлечение значений с плавающей запятой из строк с помощью регулярных выражений

Рассмотрим задачу извлечения двойного значения из строки. Чтобы добиться этого с помощью регулярного выражения, необходимо выполнить следующие шаги:

  1. Создание регулярного выражения:

    import re
    
    pattr = re.compile(???)
    x = pattr.match("4.5")
  2. Используйте Perl-совместимые регулярные выражения:
    Подходящее регулярное выражение из документации Perl для извлечения чисел с плавающей запятой значения:

    re_float = re.compile("""(?x)
    ^
       [ -]?\ *      # an optional sign and space
       (             # integers or f.p. mantissas
           \d        # start with a ...
           (           # ? takes care of integers
               \.\d* # mantissa a.b or a.
           )?
          |\.\d      # mantissa .b
       )
       ([eE][ -]?\d )?  # optionally match an exponent
    $""")
  3. Найти и получить совпадения:
    Чтобы извлечь двойное значение, примените скомпилированное регулярное выражение к нужной строке:

    m = re_float.match("4.5")
    print(m.group(0))

    Это выведет:

    4.5
  4. Извлечение нескольких значений из строки:
    Чтобы извлечь несколько значений с плавающей запятой из более крупной строки, используйте метод findall():

    s = """4.5 abc -4.5 abc - 4.5 abc   .1e10 abc . abc 1.01e-2 abc 
        1.01e-.2 abc 123 abc .123"""
    print(re.findall(r"[ -]? *(?:\d (?:\.\d*)?|\.\d )(?:[eE][ -]?\d )?", s))

    Это вернет список извлеченных значений, включая:

    ['4.5', '-4.5', '- 4.5', '  .1e10', ' 1.01e-2', '       1.01', '-.2', ' 123', ' .123']
Заявление о выпуске Эта статья перепечатана по адресу: 1729482499. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3