Как прочитать csv-файл, чтобы получить вывод без списка, но в обычной строке?

#python #list #csv #csvreader

Вопрос:

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

 Nigel;UK;19 John;US;22 Carol;Germany;26  

нет этого ввода (это список?):

 ['Nigel', 'UK', '19'] ['John', 'US', '22'] ['Carol', 'Germany', '26']  

код:

 import csv  with open('friends.csv', 'r') as source:  reader = csv.reader(source)   for line in reader:  print(line)  

Я думаю, что сейчас существуют какие-то инструкции для этого, но я их не нашел.
Спасибо

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

1. попробуйте использовать с open(‘friends.csv’, ‘r’) в качестве источника: reader = source.readlines() для строки в reader: печать(строка)

2. Спасибо, но было бы лучше без свободных строк между каждой строкой.

3. А также необходимость ; между словами вместо ,

4. print(';'.join(line))

5. так что вы можете использовать print(line.replace('n', ''))

Ответ №1:

Вы получаете вывод в виде списка, потому что это то, что csv.reader() делает! Он считывает каждую строку csv-файла, преобразует ее в список с учетом запятых и правил экранирования и возвращает этот список.

Если вас не волнует каждый отдельный элемент csv-файла, просто прочитайте файл как обычный файл:

 with open("filename.csv", "r") as f:  for line in f:  print(line, end="")  

end="" аргумент не позволяет print() добавлять собственные символы новой строки, так line как в файле уже есть символ новой строки

В качестве альтернативы вы все равно можете прочитать его в виде csv-файла, но str.join() полученный список перед его печатью. Используйте это, если вы используете строки csv-файла в качестве списка где-то в другом месте, но вы просто хотите распечатать файл здесь

 with open('friends.csv', 'r') as source:  reader = csv.reader(source)  for line in reader:  print(";".join(line))  

Ответ №2:

Попробуйте распаковать элементы списка с помощью * оператора и передать пользовательский разделитель в print :

 import csv  with open('friends.csv', 'r') as source:  reader = csv.reader(source)   for line in reader:  print(*line, sep=';')  

Результат:

 Nigel;UK;19 John;US;22 Carol;Germany;26  

Более простым (и более эффективным) подходом было бы прочитать содержимое файла в виде строки, а затем заменить все запятые двоеточием:

 with open('friends.csv', 'r') as source:  print(source.read().replace(',', ';'))  

Обратите внимание, что это предполагает, что содержимое вашего friends.csv является следующим:

 Nigel,UK,19 John,US,22 Carol,Germany,26