Как изменить разделитель по умолчанию при открытии файла

#python #csv #file #delimiter

#python #csv #файл #разделитель

Вопрос:

Я просто хотел бы создать файл csv и в то же время добавить свои данные строка за строкой с помощью cicle. К сожалению, я использую текстовые данные, поэтому не идеально использовать разделитель по умолчанию, такой как «,». Возможно ли изменить разделитель на этом этапе сценария? как я могу сделать?

 for x in y:
     newRow = "n%s,%sn" % (sentence1, sentence2)
     with open('Mydata.csv', "a") as f:
        f.write(newRow)
  

Комментарии:

1. Просто измените запятую в строке формата на то, что вы хотите.

2. Есть ли причина, по которой вы не используете csv модуль? Он добавит кавычки вокруг поля, если данные содержат запятую.

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

4. @ScottHunter Я думаю, он говорит, что предложения могут также содержать запятую, поэтому это становится двусмысленным.

Ответ №1:

Никогда не читайте и не записывайте CSV-файлы вручную (если вы действительно не уверены, что делаете). Если вы где-то пропустите одинарную кавычку или обратную косую черту, вы можете повредить остальную часть всего файла.

Используйте модуль csv из стандартной библиотеки Python (в которой есть несколько хороших примеров кода, которые вы можете посмотреть):

 import csv

with open("Mydata.csv", "a", newline="") as csvfile:
    writer = csv.writer(csvfile, delimiter=";")
    for x in y:
        newRow = (sentence1, sentence2)
        writer.writerow(newRow)
  

Если вам нужен более полнофункциональный способ загрузки и сохранения табличных данных, вместо этого взгляните на Tablib, он доступен из PyPI.

Комментарии:

1. Если вы используете csv модуль, вам не нужно менять разделитель.

2. @ScottHunter это правда. Я подумал, что все равно включу его в качестве примера, поскольку в исходном вопросе конкретно спрашивалось, как изменить разделитель. 🙂