Основываясь на том, как, по моему мнению, должен выглядеть файл .csv, и опыте работы с pandas read_csv, я решил внести свой вклад следующим образом
пример файла test.csv
"1233",No,N,C
9999,OK,C,N
пример файла test1.csv
"321",ok,P,A
980,No,A,G
"1980","No",A,"G"
Код с указанными именами полей для test.csv с print(line['shipment_id']):<1673534136765
import csv
with open('test.csv') as f_obj:
reader = csv.DictReader(f_obj, delimiter=',', fieldnames=['shipment_id','status','to_name','to_address_1'])
for line in reader:
print(line['shipment_id'])
выход:
1233
9999
Код с указанными именами полей для test1.csv с print(line['shipment_id']):<16735391><306
with open('test1.csv') as f_obj:
reader_ddQ = csv.DictReader(f_obj, delimiter=',', fieldnames=['shipment_id','status','to_name','to_address_1'])
for line in reader_ddQ:
print(line['shipment_id'])
выход:
321
980
1980
Код с указанными именами полей для test1.csv с print(line):<1673534>3963514><1677353>test1.csv
with open('test1.csv') as f_obj:
reader = csv.DictReader(f_obj, delimiter=',', fieldnames=['shipment_id','status','to_name','to_address_1'])
for line in reader:
print(line)
выход:
OrderedDict([('shipment_id', '321'), ('status', 'ok'), ('to_name', 'P'), ('to_address_1', 'A')])
OrderedDict([('shipment_id', '980'), ('status', 'No'), ('to_name', 'A'), ('to_address_1', 'G')])
OrderedDict([('shipment_id', '1980'), ('status', 'No'), ('to_name', 'A'), ('to_address_1', 'G')])
Источник для csv.DictReader
То, что вы указали в качестве своих данных, не похоже на dict ... пожалуйста, приведите лучший пример.
@sb0709 а? ОП объяснил, что это csv. Почему вы решили, что это
dict
?Не так ясно на основе выборочных данных: A: "shipment_id", "status", "to_name", "to_address_1" и т. д., поэтому создается впечатление, что csv состоит из нескольких dict...
Здесь это работает.
Я думаю, что OP пытается получить данные из «csv» в dict ... потому что это причина DictReader, поэтому он провел некоторое тестирование, и код работает, и, вероятно, проблема не вывода данных в csv, или необходимо указать имена столбцов при чтении или форматировании «csv», чтобы включить имена для каждого столбца. Вот вывод, который я вижу из правильно отформатированного "csv" OrderedDict([('shipment_id', '1233'), ('status', 'No'), ('to_name', 'N'), ('to_address_1', 'С')])