result = []
reader = ['sdsd-sdds', 'asaad', 'deded - wdswd', '123' ]
str_1 = 'deded -'
for row in reader:
    if row.index(str_1) in row:
        result.extend(row.index(str_1) + 1)
print(result)

Cómo encontrar el índice por su parte, el programa debería imprimir ['123']

-5
Aleksandr Chirikov 4 may. 2020 a las 17:50

2 respuestas

La mejor respuesta

Lo haría de esta manera:

result = []
reader = ['sdsd-sdds', 'asaad', 'deded - wdswd', '123' ]
str_1 = 'deded -'
for x in reader:
    if str_1 in x:
        result.append(reader[reader.index(x) + 1])
print(result)

Si desea detenerse después de encontrar el primero, debe usar un descanso después de encontrar un valor:

result = []
reader = ['deded - wdswd', 'asaad', 'deded - wdswd', '123' ]
str_1 = 'deded -'
for x in reader:
    if str_1 in x:
        result.append(reader[reader.index(x) + 1])
        break
print(result)
0
delolath78 4 may. 2020 a las 15:15

La declaración row.index(str1) no le da el índice de row en reader; le da el índice de str1 en row, y esto es inútil para lo que está tratando de hacer, que es obtener la siguiente fila después en {{ X5}} una vez que hayas encontrado una coincidencia (y no importa en qué parte de la cadena se encuentre AFAICT).

Puede hacer esto haciendo reader.index(row), pero sería más fácil enumerar reader para que ya tenga el índice disponible. El uso de index no es necesariamente en absoluto, ya que también puede hacer str_1 in row:

for i, row in enumerate(reader):
    if str_1 in row:
        result.append(reader[i+1])
2
Samwise 4 may. 2020 a las 15:05