Removing elements from a list

Asked

Viewed 1,123 times

1

['# cultura de alface (parcial)\n', 'volume:5:0.25:m3\n', 'PH:7.5:0.45:-\n', 'nitrato de calcio:750:51:ppm\n', 'nitrato de potassio:500:45:ppm\n', 'sulfato de magnesio:400:25:ppm\n', 'sulfato de manganes:1.5:0.45:ppm\n', 'fosfato monoamonico:150:40:ppm\n', 'detritos:100:50:ppm\n', '\n']

I have the list above and want to remove from 'volume:5:0.25:M32 n' only the 5 and 0.25 separately

2 answers

1

Use the function split to break a string into a list of substrings from a separator. In your case use the ':' tab for the item 'volume:5:0.25:m3\n'. This way the function will return a list ['volume', '5', '0.25', 'm3\n']. Items 1 and 2 are what you need.

In [1]: v = ['# cultura de alface (parcial)\n', 'volume:5:0.25:m3\n', 'PH:7.5:0.45:-\n', 'nitrato de calcio:750:51:ppm\n', 'nitrato de potassio:500:45:ppm\n', 'sulfato de magnesio:400:25:ppm\n', 'sulfato de manganes:1.5:0.45:ppm\n', 'fosfato monoamonico:150:40:ppm\n', 'detritos:100:50:ppm\n', '\n']

In [2]: v[1].split(':')[1]
Out[2]: '5'

In [3]: v[1].split(':')[2]
Out[3]: '0.25'

1

I believe what you seek is str.split(sep=None, maxsplit=-1), same. Given a string, this method will create a list with each of the items in this string, which can be accessed by an index. See the code:

# criamos a sua lista, com todas as entradas
lista = ['# cultura de alface (parcial)\n', 'volume:5:0.25:m3\n', 'PH:7.5:0.45:-\n',
         'nitrato de calcio:750:51:ppm\n', 'nitrato de potassio:500:45:ppm\n',
         'sulfato de magnesio:400:25:ppm\n', 'sulfato de manganes:1.5:0.45:ppm\n',
         'fosfato monoamonico:150:40:ppm\n', 'detritos:100:50:ppm\n', '\n']

# e mais duas listas de apoio
nova_lista = []
resultado_consulta = []

for elemento in lista: # para cada elemento nesta lista
    provisorio = elemento.strip('\n') # removemos a nova linha -> '\n'
    # e separamos as informações usando os dois pontos:
    nova_lista.append(provisorio.split(':'))

for dado in nova_lista: # para cada informação nessa nova lista
    if "volume" in dado: # procuramos por essa string (volume nesse caso)
        for valor in dado: # ao encontrar, percorremos esse registro
            resultado_consulta.append(valor) # adicionando em 'resultado_consulta'
        break # depois de encontrar 'volume', paramos

print('Mostrando apenas as informações de ' + resultado_consulta[0] + ':')
print(resultado_consulta[1] + ', ' + resultado_consulta[2])


The list resultado consulta will have more than one element, which can be accessed through indexes (starting at zero), for example:

resultado_consulta[0] # o item 0 neste caso será 'volume'
resultado_consulta[1] # e o 1, será '5'
resultado_consulta[2] # e o 2, será '0.25'
resultado_consulta[3] # e o 3, será 'm3'
resultado_consulta[4] # e o 4, será: IndexError: list index out of range

Because there is no element 5 on that list!

Upshot: resultado da execução do programa

Browser other questions tagged

You are not signed in. Login or sign up in order to post.