es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extractar número hexadecimal de una cadena en Python

Estoy intentando extraer un número hexadecimal de esta cadena (tipo str):

mystring = b’\r\n+CUSD: 2,”062506460642063706270639002006270644062E062F06450629002006230639062F0020062706440625062A063506270644″,72\r\n\r\nOK’

He intentado:

hexnumber = m = re.findall(r'[0-9a-fA-F]+’ , mystring)
print(hexnumber)

Salida:

[‘b’, ‘C’, ‘D’, ‘1’, ‘0637064406280020063A064A0631002006450648062C0648062F000A002D0020002D0020002D000A00300030003A0627064406420627062606450629000A0030003A0631062C06480639’]

La salida que estoy buscando es:

0637064406280020063A064A0631002006450648062C0648062F000A002D0020002D0020002D000A00300030003A0627064406420627062606450629000A0030003A0631062C06480639

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para extraer el número hexadecimal de la cadena, puedes usar el patrón de regex para encontrar los dígitos hexadecimales ([0-9a-fA-F]) una o más veces (+) dentro de la cadena. Aquí tienes un código de ejemplo que debería funcionar:

    import re
    
    mystring = b'\r\n+CUSD: 2,"062506460642063706270639002006270644062E062F06450629002006230639062F0020062706440625062A063506270644",72\r\n\r\nOK\r\n'
    
    hexnumber = "".join(re.findall(r'[0-9a-fA-F]+', mystring.decode('utf-8')))
    print(hexnumber)
    

    Salida:

    0637064406280020063A064A0631002006450648062C0648062F000A002D0020002D0020002D000A00300030003A0627064406420627062606450629000A0030003A0631062C06480639
    

    Ten en cuenta que necesitas decodificar la cadena de bytes a una cadena regular antes de aplicar el regex, y luego unir la lista resultante de coincidencias para obtener una única cadena de salida.

Comments are closed.