Tengo el siguiente código de prueba. ¿Cómo puedo hacer que esta condición sea verdadera? Sé que a.split es un método en Str () pero cuando lo pongo en una variable lo ve como una lista.

a="1.1.1.1/29"

aa=a.split('/')

>>aa == "29"

>>False
-9
error467 11 may. 2019 a las 09:10

4 respuestas

La mejor respuesta

Puedes usar en la lista como

a="1.1.1.1/29"

aa=a.split('/')

>>"29" in aa

>>True
1
lat long 11 may. 2019 a las 06:15

Split efectivamente divide una cadena en una subcadena y devuelve las subcadenas resultantes dentro de una lista.

La siguiente condición devuelve True:

aa[1] == "29" 
0
Francesco Meli 11 may. 2019 a las 06:15

str.split() devuelve la "lista de cadenas después de dividir el original por el delimitador que especificó.

a = '1.1.1.1/29'
aa = a.split('/') # aa is now ['1.1.1.1', '29']
subnet = aa[1] # subnet is '29'

Puede obtener más información al respecto aquí: https://www.pythonforbeginners.com/dictionary/python- dividido

0
rdas 11 may. 2019 a las 06:15

str.split le ofrece una lista , y también a.split('/'), y si compara una lista con una cadena, obviamente fallará

Debe tomar el último elemento de la lista y compararlo con 29 para que el código funcione de la siguiente manera.

In [119]: a="1.1.1.1/29"                                                                                                                                                          

In [120]: aa=a.split('/')                                                                                                                                                         
#Gives you a string
In [121]: aa                                                                                                                                                                      
Out[121]: ['1.1.1.1', '29']
#Second element of list is 29, comparison returns True
In [122]: aa[1] == '29'                                                                                                                                                           
Out[122]: True
#List to string comparison returns False
In [123]: aa == '29'                                                                                                                                                              
Out[123]: False

Pero puede verificar la membresía utilizando el operador in, para ver si el elemento está contenido en la propia cadena, lo que le ahorrará la molestia de dividir la cadena y comparar el elemento de la lista

In [125]: a="1.1.1.1/29"                                                                                                                                                          

In [126]: '29' in a                                                                                                                                                               
Out[126]: True
0
marc_s 11 may. 2019 a las 07:50