Извлечь столбец из файла .csv по имени

У меня есть файл .csv, подобный этому:

  Name                    |    Twitter handle
  3 Degrees Incorporation |    3Degrees_Inc

первая строка — это имена столбцов, а вторая строка — содержимое каждого из двух столбцов.

Если я хочу извлечь данные, перечисленные в столбце «Дескриптор Twitter», какой правильный код Python использовать?

спасибо


person Jin-Dominique    schedule 22.10.2013    source источник
comment
См. stackoverflow.com/questions/3222831/   -  person megawac    schedule 22.10.2013
comment
Стоит отметить, что на самом деле это недопустимый формат CSV (или, скорее, если вы интерпретируете его как CSV в соответствии с RFC 4180 или любой его разумный диалект, большинство ваших значений имеют лишние пробелы до и после них).   -  person abarnert    schedule 22.10.2013


Ответы (1)


with open(csvfile) as f:
    for row in csv.DictReader(f, delimiter='|', skipinitialspace=True):
        do_something_with(row['Twitter handle']

Дополнительную информацию см. в документах… но это не так уж и много. к этому, чем это.

Но на самом деле это не правильный CSV, и вам просто повезло, что вы запрашиваете последний столбец, потому что все остальные столбцы имеют терминальные пробелы, а также начальные пробелы, и нет никакого способа пропустить это. Итак, если вы хотите обработать любой другой столбец, вам понадобится что-то вроде этого:

with open(csvfile) as f:
    headers = next(csv.reader(f, delimiter='|', skipinitialspace=True))
    headers = [header.strip() for header in headers]
    for row in csv.DictReader(f, fieldnames=headers, 
                              delimiter='|', skipinitialspace=True):
        do_something_with(row[colname].strip())
person abarnert    schedule 22.10.2013
comment
Спасибо за ваш ответ. Просто я продолжаю получать синтаксическую ошибку в команде `headers = [header.strip() для заголовка в заголовках]...python doesn't seem to recognize the headers`..... как я могу ее решить? - person Jin-Dominique; 22.10.2013
comment
Это почти всегда означает, что вам не хватает близких скобок/квадратных скобок/кавычек/и т. д. на предыдущей строке. Я не могу отладить его лучше, чем без вашего фактического кода и трассировки. - person abarnert; 22.10.2013