Tak więc mam po prostu bardzo długą listę ciągów i plik CSV, który zawiera kolumnę ciągów i kolumnę liczb. Muszę przejrzeć bardzo długą listę ciągów, a dla każdego przepętrzyć wiersze pliku CSV sprawdzając każdy ciąg w pierwszej kolumnie pliku CSV, aby zobaczyć, czy występuje on w moim ciągu, a jeśli tak, to dodać numer w drugiej kolumnie do czegoś. Minimalna rodzaju przykład byłobyPotrafię tylko raz przechodzić przez czytnik 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)
Przykład CSV złożyć, które mogą korzystać z tego może być
a, 1
great, 2
oczywiście csv.reader (F) wytwarza Iterable że można pętli tylko raz. Widziałem rekomendacje gdzie indziej używać itertools, ale wszystkie zalecenia, które znalazłem, dotyczyły problemów polegających na zapętleniu pliku CSV kilka razy, zwykle zaledwie dwa razy. Gdybym próbował użyć tego do wielokrotnego przechodzenia przez CSV, nie jestem pewien, co oznaczałoby zużycie pamięci, i ogólnie zastanawiam się nad najmądrzejszym sposobem rozwiązania tego problemu.
Jak duży jest plik? Czy możesz po prostu przeczytać całą rzecz w słowniku i wykonać swoje wyszukiwania względem wynikowego słownika? –