Python CSV Reader & Writer для соблюдения двойных кавычекPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python CSV Reader & Writer для соблюдения двойных кавычек

Сообщение Anonymous »

Я новичок в Python и работаю над приведенным ниже вариантом использования:
Я хочу, чтобы мой скрипт Python улучшил CSV-файл.
Мой input.csv выглядит следующим образом:

Код: Выделить всё

test_case,test_desc,"test data 1","test data 2"
,0,"",
Я хочу улучшить это, добавив еще два столбца. Итак, мой файл output.csv должен выглядеть следующим образом:

Код: Выделить всё

test_case,test_desc,"test data 1","test data 2",col_1,col_2
,0,"",,,
Я использую приведенный ниже скрипт:

Код: Выделить всё

import csv
from pathlib import Path

source_headers = []
source_data = []

# Read the 'input.csv'
with Path('input.csv').open() as file:
headers = csv.reader(file)
for line in headers:
source_headers = line
break

with Path('input.csv').open() as file:
lines = csv.DictReader(file)
for line in lines:
source_data.append(line)

print("source_headers: ", source_headers)
print("source_data: ", source_data)

# Specify the target_enhanced_headers
target_enhanced_headers = {'col_1': 'target col_1', 'col_2': 'target col_2'}

enhanced_headers = source_headers
enhanced_headers.extend(target_enhanced_headers)
enhanced_data = source_data

# Enhance the source data
for new_header in target_enhanced_headers:
enhanced_data[0][new_header] = ''

print("enhanced_headers: ", enhanced_headers)
print("enhanced_data: ", enhanced_data)

# Write new file
with Path('output.csv').open("w", encoding ="utf-8", newline='') as file:
writer = csv.DictWriter(file, fieldnames=enhanced_headers)
writer.writeheader()
writer.writerows(enhanced_data)
file.close()
Вывод этого скрипта выглядит следующим образом:

Код: Выделить всё

source_headers:  ['test_case', 'test_desc', 'test data 1', 'test data 2']
source_data:  [{'test_case': '', 'test_desc': '0', 'test data 1': '', 'test data 2': ''}]
enhanced_headers:  ['test_case', 'test_desc', 'test data 1', 'test data 2', 'col_1', 'col_2']
enhanced_data:  [{'test_case': '', 'test_desc': '0', 'test data 1': '', 'test data 2': '', 'col_1': '', 'col_2': ''}]
Выходной файл CSV выглядит так:

Код: Выделить всё

test_case,test_desc,test data 1,test data 2,col_1,col_2
,0,,,,
Это не учитывает двойные кавычки в заголовках и данных.
Как заставить это работать в Python с помощью csv модуль?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ble-quotes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»