Почему Python дает 3 разные строки из outputWriter вместо перезаписи строк? - PullRequest
0 голосов
/ 06 апреля 2020

Я учусь импортировать информацию в файлы .csv с Python. У меня есть следующий код:

import csv

outputFile = open('output.csv','w',newline = '')
outputWriter = csv.writer(outputFile)
outputWriter.writerow(['spam','eggs','bacon','ham'])
outputWriter.writerow(['Hello World!','eggs','bacon','ham'])
outputWriter.writerow([1,2,3.141592,4])
outputFile.close()

Мой CSV-файл выглядит следующим образом:

enter image description here

Почему он выводит в 3 отдельных строки вместо того, чтобы перезаписывать 1-ю строку каждый раз? Как бы я мог перезаписать его, если бы захотел?

Спасибо за ваше понимание новичка.

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы можете использовать от seek() до go до начала файла перед записью каждой строки.

import csv

outputFile = open('output.csv','w',newline = '')
outputWriter = csv.writer(outputFile)
outputWriter.writerow(['spam','eggs','bacon','ham'])
outputFile.seek(0)
outputWriter.writerow(['Hello World!','eggs','bacon','ham'])
outputFile.seek(0)
outputWriter.writerow([1,2,3.141592,4])
outputFile.truncate() # clear out any remnants of previous lines.
outputFile.close()
0 голосов
/ 06 апреля 2020

Я считаю, что поведение взято из библиотеки csv, если вы хотите написать в одну строку, вы можете попробовать это:

with open("output.csv","w") as writer:
    writer.write(",".join(['spam','eggs','bacon','ham']))
    writer.write(",".join(['Hello World!','eggs','bacon','ham']))
    writer.write(",".join(['1','2','3.141592','4']))

Кроме того, если вы хотите использовать библиотеку CSV, вы можете попробовать сделать это:

import csv

# Create 1 list from the other 3
list1 = ['spam','eggs','bacon','ham']
list2 = ['Hello World!','eggs','bacon','ham']
list3 = [1,2,3.141592,4]
completeList = list1 + list2 + list3

# Write that list into one line
outputFile = open('output.csv','w',newline = '')
outputWriter = csv.writer(outputFile)
outputWriter.writerow(completeList)

Редактировать: Это результат, который я получил от обоих подходов.

Result

Если вы не достигли этого результата. Вероятно, что ваши элементы списка содержат какой-то разрыв строки "\ n" внутри них. Я не уверен, где вы читаете свои списки в качестве входных данных. Если у вас есть какие-либо материалы, было бы неплохо, если бы вы опубликовали их.

Пожалуйста, дайте мне знать, если это помогло! Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...