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.

Se espera un objeto similar a una cadena o byte en la comprensión de lista.

Estoy intentando iterar sobre la lista ‘companies’ para encontrar la tupla que contiene ‘VIC’ en el quinto elemento. Sin embargo, obtengo el siguiente error:

‘expected string or bytes-like object’

Sé que este error se debe al corchete sin terminar en la última tupla de la lista. ¿Cómo lo solucionaría? (La lista de empresas es de un gran conjunto de datos)

¿Qué debo hacer para remediar esto?

merchant_state = 'VIC'

companies = [(378355, 'ACT', 'DEJAN TOMIC', 'Individual/Sole Trader', 
'VIC', '3175', 97603461250, 'FADEDLINESBARBERSHOP', 20), 
(408649, 'ACT', 'ALEXANDER DEJANOVIC', 
'Individual/Sole Trader', 'NSW', '2193', 97733511621, None, 20),
(433402, 'ACT', 'LUTHERAN CHURCH OF AUSTRALIA QUEENSLAND DISTRICT(LUTHERAN COMM CAR', 
'Other Unincorporated Entity', 'QLD', '4560', 97899426696, 'GRACEVILLE CENTRE', 20)]

companies = [item for item in companies if re.search(item[4],merchant_state, re.IGNORECASE ) != -1]
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “se esperaba un objeto similar a cadena o bytes” indica que hay un problema con el tipo de dato en el código.

    El problema con el código es que está tratando de usar expresiones regulares en el elemento de la lista, que no es una cadena. Para solucionar esto, simplemente cambie el código para comparar las cadenas directamente, sin usar expresiones regulares:

    merchant_state = 'VIC'
    
    companies = [(378355, 'ACT', 'DEJAN TOMIC', 'Individual/Sole Trader', 'VIC', '3175', 97603461250, 'FADEDLINESBARBERSHOP', 20), 
    (408649, 'ACT', 'ALEXANDER DEJANOVIC', 'Individual/Sole Trader', 'NSW', '2193', 97733511621, None, 20),
    (433402, 'ACT', 'LUTHERAN CHURCH OF AUSTRALIA QUEENSLAND DISTRICT(LUTHERAN COMM CAR', 'Other Unincorporated Entity', 'QLD', '4560', 97899426696, 'GRACEVILLE CENTRE', 20)]
    
    companies = [item for item in companies if item[4] == merchant_state]
    

    Con este cambio, el código debería iterar sobre la lista ‘companies’ para encontrar la tupla que contiene ‘VIC’ en el quinto elemento de ella.

Comments are closed.