Cuando uso re.findall, devuelve [('0.76', '22:43:11')]. Cuando intento pop(1) o pop (0) obtengo un error fuera de rango. Pero estoy dentro del alcance.

El 0.76 representa un valor de voltaje y el otro es un momento en el que se tomó el voltaje.

import re
time = [('0.76', '22:43:11')]
    
time1 = time.pop(1)
    
print (time)
print (time1)
-1
Data Logger 15 ene. 2021 a las 11:46

3 respuestas

La mejor respuesta

list.pop(1) eliminará el elemento del índice 1 de una lista porque los índices de la lista comienzan en 0. Solo hay 1 elemento en su lista (una tupla) y ese elemento está en el índice 0, por lo que pop(1) fallará .

Creo que quieres profundizar en la tupla, así que:

time = [('0.76', '22:43:11')]
time1 = time.pop(0)[1]    # take the first item from the list and get the second item in the returned tuple
print(time)
print(time1)

Salida

[]
22:43:11

Esto pierde permanentemente el valor de voltaje que supongo que también desea. En eso, puede usar el desempaquetado de tuplas en distintas variables:

time = [('0.76', '22:43:11')]
voltage, time1 = time.pop(0)
print(time)
print(voltage)
print(time1)

Salida

[]
0.76
22:43:11
0
mhawke 15 ene. 2021 a las 08:57

time.pop(0) funciona bien, porque en la lista time tienes un miembro y el índice es 0, ('0.76', '22:43:11') es una tupla y está en el index 0 del {{X4 }} lista, y no hay nada en index 1, por lo que no puede hacer time.pop(1) que está fuera del límite.

import re
time = [('0.76', '22:43:11')]

time1 = time.pop(0)

print (time)
print (time1)

La salida del código anterior es:

[]
('0.76', '22:43:11')
1
Sahadat Hossain 15 ene. 2021 a las 08:57

Pop (1) da un error fuera de rango porque el tiempo como solo 1 elemento que es len (tiempo) es igual a uno. pop (0) funciona bien.

0
Ashish M J 15 ene. 2021 a las 08:53
65732982