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:
Construir la expresión regular:
import re
pattr = re.compile(???)
x = pattr.match("4.5")
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
$""")
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
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']
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