записать CSV-файл с двойными кавычками для определенного столбца, который не работает

Я пытаюсь написать CSV-файл, используя Python csv Writer.

В котором одно из значений столбца заключено в «» [двойные кавычки], например. : 'col1' 'col2' "test", когда я открываю файл в wordpad, слово test ожидается как "test", но фактический результат """test"""

может кто подскажет по этому вопросу.

Пример фрагмента моей попытки:

csvReader = csv.reader(iInputFile)
writer = csv.writer(open('one_1.csv', 'wb'), delimiter=',', lineterminator='\r\n')

for row in csvReader:
     rawRow = []
     rawRow.append('31-7-2014') #Appending Date
     rawRow.append(row[0])   #Appending data
     rawRow.append('\"'+'test'+'\"') 
     writer.writerow(rawRow)

person Emma    schedule 31.07.2014    source источник


Ответы (3)


попробуй с этим

f_writ = open('one_4.csv', 'wb')
csvReader = csv.reader(iInputFile)
writer = csv.writer(f_writ, delimiter=',',
                lineterminator='\r\n',
                quotechar = "'"
                )

for row in csvReader:

    writer.writerow(['31-7-2014',row[0],'\"text\"'])

f_writ.close()

также я считаю очень полезной эту ссылку http://pymotw.com/2/csv/, есть много примеров

person GiovanniPi    schedule 31.07.2014
comment
Спасибо за ссылку, действительно полезная. Ваш код работает именно так, как я хочу. Но не могли бы вы объяснить это для моего лучшего понимания. Большое спасибо. :) - person Emma; 31.07.2014

Вероятно, вам нужно поиграть с параметрами цитирования и escapechar.

Например, модифицированный код

csvReader = csv.reader(iInputFile)
writer = csv.writer(open('one_1.csv', 'wb'), delimiter=',', lineterminator='\r\n', quoting=csv.QUOTE_NONE, escapechar='\\')

for row in csvReader:
     rawRow = []
     rawRow.append('31-7-2014') #Appending Date
     rawRow.append(row[0])   #Appending data
     rawRow.append('\"'+'test'+'\"') 
     writer.writerow(rawRow)

будет производить вывод следующим образом:

31-7-2014,'col1',\"test\"
person Vasily Ryabov    schedule 31.07.2014
comment
Спасибо за ответ, но я просто хочу строку в двойных кавычках. Никаких других символов, даже пробела. - person Emma; 31.07.2014

Насколько я могу судить из принятого ответа от @GiovanniPi, по умолчанию используется

quotechar= '"'

Поскольку ожидаемый вывод уже имеет двойные кавычки, его необходимо изменить на:

quotechar = "'"

Я не уверен, что бы вы сделали, если бы вам нужно было иметь как одинарные, так и двойные кавычки, поскольку для quotechar требуется строка из 1 символа.

person Junk    schedule 14.05.2020