Pregunta Extraer datos con expresiones regulares de Python


Estoy teniendo problemas para entender las expresiones regulares de Python y obtener una expresión regular para extraer valores específicos.

La página que intento analizar tiene una serie de productIds que aparecen en el siguiente formato

\"productId\":\"111111\"

Necesito extraer todos los valores, 111111 en este caso.


8
2018-04-11 20:36


origen


Respuestas:


t = "\"productId\":\"111111\""
m = re.match("\W*productId[^:]*:\D*(\d+)", t)
if m:
    print m.group(1)

es decir, coincide con los caracteres que no son palabras (\W*), entonces productId seguido por caracteres que no son de columna ([^:]*) y un :. Luego haga coincidir los no dígitos (\D*) y unir y capturar los siguientes dígitos ((\d+))

Salida

111111

17
2018-04-11 20:54



algo como esto:

In [13]: s=r'\"productId\":\"111111\"'

In [14]: print s
\"productId\":\"111111\"

In [15]: import re

In [16]: re.findall(r'\d+', s)
Out[16]: ['111111']

9
2018-04-11 20:40



Las barras invertidas aquí podrían aumentar la confusión, ya que se usan como un carácter de escape tanto por cadenas de Python (no crudas) como por la sintaxis de expresiones regulares.

Esto extrae los ID de productos del formato que publicó:

re_prodId = re.compile(r'\\"productId\\":\\"([^"]+)\\"')

La cadena sin procesar r'...' elimina un nivel de escape de barra invertida; el uso de una comilla simple como delimitador de cadena elimina la necesidad de evitar comillas dobles; y finalmente los backslashe se duplican (solo una vez) debido a su significado especial en el lenguaje de expresiones regulares.

Puedes usar el objeto regexp findall() método para encontrar todas las coincidencias en algún texto:

re_prodId.findall(text_to_search)

Esto devolverá una lista de todos los identificadores de productos.


1
2018-04-11 20:43



Prueba esto,

 :\\"(\d*)\\"

Proporcione más ejemplos de sus datos si esto no hace lo que desea.


0
2018-04-11 20:40