Ekstrak kolom dari file .csv berdasarkan nama

Saya memiliki file .csv seperti ini:

  Name                    |    Twitter handle
  3 Degrees Incorporation |    3Degrees_Inc

baris pertama adalah nama kolom dan baris kedua adalah isi masing-masing dua kolom.

Jika saya ingin mengekstrak data yang tercantum di bawah kolom "Pegangan Twitter", kode python apa yang tepat untuk digunakan?

terima kasih


person Jin-Dominique    schedule 22.10.2013    source sumber
comment
Lihat stackoverflow.com/questions/3222831/   -  person megawac    schedule 22.10.2013
comment
Perlu dicatat bahwa ini sebenarnya bukan format CSV yang valid (atau, lebih tepatnya, jika Anda menafsirkannya sebagai CSV menurut RFC 4180 atau dialek apa pun yang masuk akal, sebagian besar nilai Anda memiliki spasi tambahan sebelum dan sesudahnya).   -  person abarnert    schedule 22.10.2013


Jawaban (1)


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

Lihat dokumen untuk informasi lebih lanjut… tetapi tidak banyak lagi untuk itu daripada ini.

Namun sungguh, ini bukan CSV yang tepat, dan Anda hanya beruntung karena meminta kolom terakhir, karena semua kolom lainnya memiliki spasi terminal serta spasi awal, dan tidak ada cara untuk melewatinya. Jadi, jika Anda ingin menangani kolom lain, Anda memerlukan sesuatu seperti ini:

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
Terimakasih atas balasan anda. Hanya saja saya terus mendapatkan kesalahan sintaks pada perintah ` headers = [header.strip() for header in headers]...python doesn't seem to recognize the headers`.....bagaimana cara mengatasinya? - person Jin-Dominique; 22.10.2013
comment
Itu hampir selalu berarti Anda kehilangan tanda kurung tutup/kurung/kutipan/dll. pada baris sebelumnya. Saya tidak dapat men-debugnya lebih baik dari itu tanpa kode dan penelusuran balik Anda yang sebenarnya. - person abarnert; 22.10.2013