Quindi, in pratica, ho un elenco estremamente lungo di stringhe e un file CSV che contiene una colonna di stringhe e una colonna di numeri. Ho bisogno di scorrere l'elenco estremamente lungo di stringhe e, per ciascuna di esse, scorrere le righe del file CSV controllando ogni stringa nella prima colonna del CSV per vedere se si verifica nella mia stringa e, in caso affermativo, aggiungere il numero nell'altra colonna a qualcosa. Una sorta minima di esempio potrebbe essereÈ possibile solo iterare una volta tramite il lettore csv
import csv
sList = ['a cat', 'great wall', 'mediocre wall']
vals = []
with open('file.csv', 'r') as f:
r = csv.reader(f)
for w in sList:
val = 0
for row in r:
if row[0] in w:
val += 1
vals.append(val)
Un esempio di un file CSV con il quale potrei usare questo potrebbe essere
a, 1
great, 2
Naturalmente csv.reader (f) crea un iterabile che posso ciclo attraverso solo una volta. Ho visto raccomandazioni altrove per usare itertools ma tutti i consigli che ho trovato sono stati per problemi che implicano il looping del file CSV un piccolo numero di volte, di solito solo due volte. Se ho provato ad usarlo per passare attraverso il CSV molte volte non sono sicuro di cosa significherebbe per il consumo di memoria, e in generale mi chiedo solo il modo più intelligente per affrontare questo problema.
Quanto è grande il file? Puoi leggere l'intera cosa in un dizionario ed eseguire le tue ricerche sul dizionario risultante? –