2016-12-14 10 views
0

Мне нужно переопределить следующий код, чтобы любая строка разбилась на данные строки (которая отображалась как пустая строка) в виде файла '\n'.Как использовать Python для записи разрывов строк в csv как ' n'?

Однако '\n' должно быть записано после каждой строки, чтобы оно отображалось как пустая строка.

Чтобы избежать ошибок, каждая строка должна быть закодирована как «utf-8».

with open('csvfile.csv', 'w') as csvOutput: 
    testData = csv.writer(csvOutput, delimiter='|', escapechar=' ', quoting=csv.QUOTE_NONE) 

    for row in data: 
     newRow = [row[x].encode('utf-8') for x in xrange(len(row))] 
     testData.writerow(newRow) 
     testData.writerow(['\n']) 
+3

Try 'testData.writerow ('\\ п')', если вы хотите получить '\ n' в выходном файле .. – 101

+0

Где вы хотите разрывы строк, чтобы избежать? Есть ли в фактическом содержимом строки, что означает 'row [x] .replace ('\ n', '\\ n'). Encode ('utf-8')'? Или вы имеете в виду, что пустая строка между каждой строкой должна иметь escape-строку, означающую 'testData.writerow (['\\ n'])'? – TigerhawkT3

+0

Да, я просто попробовал предложение @ 101 о замене разрывов строк в содержимом строки, который работал. Не стесняйтесь отформатировать в качестве ответа, если это применимо. – Phillip

ответ

0

Я предполагаю, что это делать с \ быть маскирующим в Python. \\ интерпретируется как фактическая строка \. Так что ваш код должен выглядеть следующим образом:

with open('csvfile.csv', 'w') as csvOutput: 

    testData = csv.writer(csvOutput, delimiter='|', escapechar=' ', quoting = csv.QUOTE_NONE) 


    for row in data: 
     newRow = [row[x].encode('utf-8') for x in xrange(len(row))] 
     testData.writerow(newRow) 
     testData.writerow('\\n') #Note the final row with \\ 
1

Установите lineterminator опцию нужной последовательности символов. Дополнительная информация о том, что еще имеется, находится в the docs.

with open('csvfile.csv', 'w') as csvOutput: 
    testData = csv.writer(csvOutput, delimiter='|', escapechar=' ', quoting=csv.QUOTE_NONE, lineterminator='\n') 

    for row in data: 
     testData.writerow(s.replace('\n', '\\n').encode('utf-8') for s in row) 
+1

Спасибо за ответ. Тем не менее, это, как представляется, сохраняет пустые строки в данных строки. В исходных комментариях кто-то упомянул '' \\ n''' и row [x] .replace ('\ n', '\\ n'). Encode ('utf-8') 'успешно заменил пустые строки с '\ n' – Phillip

+0

Если строки новой строки находятся в самой _data_, вам придется заменить их своими буквальными '\ n' последовательностями. Вы можете выполнить замену при создании новых строк. –

 Смежные вопросы

  • Нет связанных вопросов^_^