"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como expressões regulares podem ser usadas para extrair valores de ponto flutuante de strings?

Como expressões regulares podem ser usadas para extrair valores de ponto flutuante de strings?

Publicado em 2024-11-09
Navegar:232

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

Extraindo valores de ponto flutuante de strings com expressões regulares

Considere a tarefa de extrair um valor duplo de uma string. Para conseguir isso usando uma expressão regular, as seguintes etapas estão envolvidas:

  1. Construa o Regexp:

    import re
    
    pattr = re.compile(???)
    x = pattr.match("4.5")
  2. Use expressões regulares compatíveis com Perl:
    Um regexp adequado da documentação Perl para extrair ponto flutuante os valores são:

    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. Encontrar e recuperar correspondências:
    Para extrair o valor duplo, aplique o regexp compilado à string desejada:

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

    Isso produzirá:

    4.5
  4. Extrair vários valores de uma string:
    Para extrair vários valores de ponto flutuante de uma string maior, use o método 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))

    Isso retornará uma lista de valores extraídos, incluindo:

    ['4.5', '-4.5', '- 4.5', '  .1e10', ' 1.01e-2', '       1.01', '-.2', ' 123', ' .123']
Declaração de lançamento Este artigo foi reimpresso em: 1729482499 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3