Saya mencoba mempelajari cara menemukan string atau nilai dalam csv menggunakan python. saya pikir itu sederhana tetapi ketika saya mencoba mengeksekusi kode saya, saya tidak mengerti mengapa kode saya tidak dapat menemukan string yang saya inginkan. Ini kode saya:

import csv

with open('sample2.csv', 'rt') as baca:
    read = csv.reader(baca, delimiter='\'')
    for row in read:
        match = row[0]
        if match == "Sample":
            print match

Dan saya juga mencoba untuk mencetak "row[0]" dan hasilnya seperti ini:

id      name         number
1       Sample    0123450000007 

Cetak "baris" tanpa indeks :

{'id\tname\tnumber': '1\tSample\t0123450000007'}

Tangkapan layar:

enter image description here

1
Scarlett stone 11 Agustus 2017, 05:55

2 jawaban

Jawaban Terbaik

Sepertinya demilter harus menjadi tab

In [9]: import csv
   ...:
   ...: with open('sample2.csv', 'rt') as baca:
   ...:     read = csv.reader(baca, delimiter='\t')
   ...:     for row in read:
   ...:         match = row[1]
   ...:         if match == "Sample":
   ...:             print match
Sample
2
Amit Verma 11 Agustus 2017, 03:30

Anda juga bisa menggunakan csv.DictReader yang membuatnya lebih mudah untuk memilih item yang Anda inginkan. Dengan asumsi CSV Anda terlihat seperti ini:

id,name,number
1,Sample,234234
2,NotAMatch,567657

Anda dapat mencetak baris yang cocok seperti ini:

In [159]: import csv
In [160]: with open('samples.csv') as f:
     ...:     reader = csv.DictReader(f, delimiter='\t')
     ...:     for row in reader:
     ...:         if row['name'] == "Sample":
     ...:             print(row)
     ...:             
OrderedDict([('id', '1'), ('name', 'Sample'), ('number', '234234')])

Atau sedikit lebih pendek dengan pemahaman daftar:

In [163]: with open('samples.csv') as f:
     ...:     reader = csv.DictReader(f)
     ...:     print([row for row in reader if row['name'] == "Sample"])
1
Cory Madden 11 Agustus 2017, 03:26