¿qué ocurre, bueno, una llamada a help
puede arrojar algo de luz.
>>> help(csv.reader)
reader(...)
csv_reader = reader(iterable [, dialect='excel']
[optional keyword args])
for row in csv_reader:
process(row)
The "iterable" argument can be any object that returns a line
of input for each iteration, such as a file object or a list. The
optional "dialect" parameter is discussed below. The function
also accepts optional keyword arguments which override settings
provided by the dialect.
lo que parece que csv.reader
espera un iterador de algún tipo que devolverá una línea, pero estamos pasando una cadena que itera sobre una base de char por lo que su carácter de análisis por carácter, una manera de solucionar este problema sería generar un archivo temporal, pero no es necesario, solo tenemos que pasar cualquier objeto iterativo.
tenga en cuenta lo siguiente, que simplemente divide la cadena en una lista de líneas, antes de alimentar al lector.
import csv
import requests
r = requests.get('http://vote.wa.gov/results/current/export/MediaResults.txt')
data = r.text
reader = csv.reader(data.splitlines(), delimiter='\t')
for row in reader:
print row
esto parece funcionar.
También recomiendo usar csv.DictReader
es bastante útil.
>>> reader = csv.DictReader(data.splitlines(), delimiter='\t')
>>> for row in reader:
... print row
{'Votes': '417141', 'BallotName': 'Michael Baumgartner', 'RaceID': '2', 'RaceName': 'U.S. Senator', 'PartyName': '(Prefers Republican Party)', 'TotalBallotsCastByRace': '1387059', 'RaceJurisdictionTypeName': 'Federal', 'BallotID': '23036'}
{'Votes': '15005', 'BallotName': 'Will Baker', 'RaceID': '2', 'RaceName': 'U.S. Senator', 'PartyName': '(Prefers Reform Party)', 'TotalBallotsCastByRace': '1387059', 'RaceJurisdictionTypeName': 'Federal', 'BallotID': '27435'}
básicamente se devuelve un diccionario para cada fila, utilizando la cabecera como la clave, de esta manera no es necesario hacer un seguimiento de la orden, pero en cambio sólo el nombre de hacer un poco más fácil para nosotros es decir row['Votes']
parece más legible luego row[4]
...
debería haberme dado cuenta por mi cuenta. Muchas gracias. – foxyNinja7