Извлеките специальные столбцы для файла csv для списка в Python

Я новичок в Python, поэтому, пожалуйста, со мной. То, что я пытаюсь сделать, это рассчитать значения широты и долготы конкретных штормов на карте, используя matplotlib, basemap, python и т.д. Моя проблема заключается в том, что я пытаюсь извлечь широту, долготу и название бурь на но я продолжаю получать ошибки между строками 41-44, где я пытаюсь извлечь столбцы в список. Может кто-то, пожалуйста, помогите мне понять это. Спасибо заранее.

Вот как выглядит файл:

1957,AUDREY,HU, 21.6N, 93.3W
1957,AUDREY,HU,22.0N,  93.4W
1957,AUDREY,HU,22.6N,  93.5W
1957,AUDREY,HU,23.2N,  93.6W

Я хочу, чтобы список выглядел следующим образом:

latitude = [21.6N,22.0N,23.4N]
longitude = [93.3W, 93.5W,93.8W]
name = ["Audrey","Audrey"]

Вот что я до сих пор:

data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=1)
'''print data'''

data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=0)

f= open('louisianastormb.csv', 'rb')
reader = csv.reader(f, delimiter=',')
header = reader.next()
zipped = zip(*reader)

latitude = zipped[3]
longitude = zipped[4]
names = zipped[1]
x, y = m(longitude, latitude)

Здесь последнее сообщение об ошибке /traceback, которое я получил:

Traceback (последний последний звонок):
Файл "/home/darealmzd/lstorms.py", строка 42, в

header = reader.next()
_csv.Error: символ новой строки, видимый в некотируемом поле - вам нужно открыть файл в режиме универсальной-новой строки?

Ответы

Ответ 1

Это выглядит как проблема с концами строк в вашем коде. Если вы собираетесь использовать все эти другие научные пакеты, вы можете использовать Pandas для части чтения CSV, которая является более надежной и полезной чем только модуль csv:

import pandas
colnames = ['year', 'name', 'city', 'latitude', 'longitude']
data = pandas.read_csv('test.csv', names=colnames)

Если вы хотите, чтобы ваши списки как в вопросе, теперь вы можете:

names = data.name.tolist()
latitude = data.latitude.tolist()
longitude = data.longitude.tolist()

Ответ 2

Стандартная версия lib (no pandas)

Предполагается, что первая строка csv является заголовком

import csv

# open the file in universal line ending mode 
with open('test.csv', 'rU') as infile:
  # read the file as a dictionary for each row ({header : value})
  reader = csv.DictReader(infile)
  data = {}
  for row in reader:
    for header, value in row.items():
      try:
        data[header].append(value)
      except KeyError:
        data[header] = [value]

# extract the variables you want
names = data['name']
latitude = data['latitude']
longitude = data['longitude']