Remove items from a list

0
['# 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 above list and want to remove from 'volume: 5: 0.25: m32 \ n' only the 5 and the 0.25 separately

    
asked by anonymous 04.06.2017 / 17:04

2 answers

1

I believe that what you are looking for is str.split(sep=None, maxsplit=-1) , even. Given string , this method will create a list with each of the string items, 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 resultado consulta list 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 in this list!

  

Result:   

    
05.06.2017 / 08:41
1

Use the split function to break a string in a list of substrings from a separator. In your case use the ':' tab for the 'volume:5:0.25:m3\n' item. That way the function will return a ['volume', '5', '0.25', 'm3\n'] list. Items 1 and 2 are the ones 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'
    
05.06.2017 / 02:16