"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se pueden utilizar las expresiones regulares para extraer valores de punto flotante de cadenas?

¿Cómo se pueden utilizar las expresiones regulares para extraer valores de punto flotante de cadenas?

Publicado el 2024-11-09
Navegar:844

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

Extracción de valores de punto flotante de cadenas con expresiones regulares

Considere la tarea de extraer un valor doble de una cadena. Para lograr esto usando una expresión regular, se requieren los siguientes pasos:

  1. Construir la expresión regular:

    import re
    
    pattr = re.compile(???)
    x = pattr.match("4.5")
  2. Usar expresiones regulares compatibles con Perl:
    Una expresión regular adecuada de la documentación de Perl para extraer punto flotante los valores son:

    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. Buscar y recuperar coincidencias:
    Para extraer el valor doble, aplique la expresión regular compilada a la cadena deseada:

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

    Esto generará:

    4.5
  4. Extraer múltiples valores de una cadena:
    Para extraer múltiples valores de punto flotante de una cadena más grande, use el 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))

    Esto devolverá una lista de valores extraídos, que incluyen:

    ['4.5', '-4.5', '- 4.5', '  .1e10', ' 1.01e-2', '       1.01', '-.2', ' 123', ' .123']
Declaración de liberación Este artículo se reimprime en: 1729482499 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3