У меня есть следующий код:Ошибка записи из DictReader в CSV
def fillBlanks():
# There are duplicate fields in the 'HEADERS' list. A better 'HEADERS' list might be:
# HEADERS = ['ST', 'Year', 'PCT_SHORT', 'PCT_V_SHORT']
HEADERS =['ST','Year','PCT_SHORT','PCT_V_SHORT','Year','PCT_SHORT','PCT_V_SHORT','Year','PCT_SHORT','PCT_V_SHORT' ]
fileH = open(outputDir+"PCT_SHORT_V_SHORT.csv", 'rb')
fileb = open(outputDir+"PCT_SHORT_V_SHOR.csv", 'wb')
reader = csv.DictReader(fileH, HEADERS,restval=0)
for row in reader:
print row
Он выводит, следующее:
# The `None` key is the result of the data row having more columns than the 'HEADERS' list has fields.
{None: ['2012', '36', '12'], 'PCT_SHORT': '19', 'Year': '2013', 'PCT_V_SHORT': '17', 'ST': 'OK'}
{'PCT_SHORT': 0, 'Year': 0, 'PCT_V_SHORT': 0, 'ST': 'AZ'}
{None: ['2012', '14', '1'], 'PCT_SHORT': '24', 'Year': '2013', 'PCT_V_SHORT': '2', 'ST': 'ID'}
где 0 заполняет поля, которые ранее пропали без вести.
Как я могу написать каждую строку этого в CSV. Я пытался что-то использовать.
with(fileb) as out:
csv_out=csv.writer(out)
csv_out.writerow(['ST','Year','PCT_SHORT','PCT_V_SHORT','Year','PCT_SHORT','PCT_V_SHORT','Year','PCT_SHORT','PCT_V_SHORT','Year','PCT_SHORT','PCT_V_SHORT'])
for row in reader:
csvwriters.writerow(row)
Я получаю ошибку!
sequence expected
Я также пытался использовать DictWriter, но я не знаком с ним. Я очень новичок в python. есть ли вообще просто написать результирующие строки DictReader в новый CSV?
Каков формат данных, которые вы хотите написать в файл 'csv'? В вашем «HEADER» есть повторяющиеся поля, которые приводят к строкам с ключами «Нет». – gnerkus
Поля являются целыми числами. Возможно, мне нужно изменить дубликаты заголовков? Я могу сделать это очень быстро. –
Я вошел и изменил заголовки, я также добавил заголовки, которые отсутствовали. Я все еще получаю те же ошибки. Моя основная проблема в начале была в том, что у меня были поля, которые отсутствовали. Я хочу заполнить 0. Поэтому я использую DictReader. –