ich in einer CSV-Datei in Python lese, die wie folgt aussieht:Lesezeilen aus CSV-Datei Python gegeben me „“ anstelle von ‚‘ (Klassen)
REGION,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010
Alabama,2138093,2348174,2646248,2832961,3061743,3266740,3444165,3893888,4040587,4447100,4779736
Alaska,64356,55036,59278,72524,128643,226167,300382,401851,550043,626932,710231
Mein Problem ist, dass, wenn ich die ersten gelesen Zeile liest es als
REGION,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010
die an erster Stelle scheint nicht so viel wie ein Problem. Aber ich später für eine Reihe sehe so einen Split die Zeichenfolge in eine Liste
lijst_eerste_regel = self.eerste_regel.split(",")
und dann für den Index von str aussehen (2010), aber Python scheint dann für ‚2010‘ schauen nicht „2010“. Daher wird es den Index nicht finden.
ich den Code hier posten (es in einer Klasse ist ich dieses Problem habe, nicht sicher, ob das relevant ist oder nicht)
import io
class Volkstelling:
def __init__(self,jaartal,csvb):
"""
>>> vs2010 = Volkstelling(2010, 'vs_bevolkingsaantal.csv')
"""
import csv
self.jaartal = jaartal
self.csvb = csvb
self.eerste_regel = next(self.csvb)
if str(jaartal) not in self.eerste_regel:
raise AssertionError ("geen gegevens beschikbaar")
def inwoners(self, regio):
lijst_eerste_regel = self.eerste_regel.split(",")
plaats_jaartal = lijst_eerste_regel.index(self.jaartal) # here is where the error occurs
data = """REGION,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010
Alabama,2138093,2348174,2646248,2832961,3061743,3266740,3444165,3893888,4040587,4447100,4779736
Alaska,64356,55036,59278,72524,128643,226167,300382,401851,550043,626932,710231"""
v = Volkstelling('2010',io.StringIO(data))
v.inwoners('Alabama')
## ValueError: '2010' not in list
'lijst_eerste_regel.index (str (self.jaartal))'? Sie konvertieren es nur lokal in '__init__', nicht in' inwoners'. Oder konvertieren Sie die Daten nach der Teilung, z. Verwenden eines Listenverständnisses 'list_eerste_regel = [int (s) für s in self.eerste_regel.split (". ")]'. – jonrsharpe
lijst_eerste_regel.index (str (self.jaartal)) das habe ich selbst versucht aber dann sucht es nach "2010" statt nach "2010". Die zweite Option bekomme ich nicht ganz. Ich gebe das nach lijst_eerste_regel = self.eerste_regel.split (",") oder statt dessen ein? –
''2010' ==" 2010 "'. Statt dessen enthält es * den Split. – jonrsharpe