При попытке записи в csv из ввода выходной файл csv показывает каждое имя с двоеточиями между буквами и пустой строкой в ​​1 строке.

import csv 
n = int(input("How many records ?"))
b = 0
for i in range(n):


   s = input("what is the name of the student  ")
   g = input(" grade ?")
   k.append(s),k.append(g)
 print("res",'[%s]'%', '.join(map(str, k)))

StuGrade = "StuGrade.csv"
with open(StuGrade, 'w' ) as f :
    thewriter = csv.writer(f)
    thewriter.writerow( k[0])
    for i in range(n*2-1) :
        b=b+1
        thewriter.writerow( k[b])
  

Это вывод моей программы:

How many records 1

what is the name of the student  ahmad 
 grade ? 3
res [ahmad ,  3]

CSV-файл выглядит так:

a,h,m,a,d,

,3

Я хочу так:

ahmad
3

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

csv.writerow() принимает список значений для этой строки — вы предоставляете отдельные значения. Строки являются итерируемыми — если вы дадите одну строку csv.writerow(), она будет использовать каждую букву как 1 столбец. Вы можете исправить это, предоставив его как список из 1 элемента:

 thewriter.writerow( [ k[b] ] )  # 1 element list

Чтобы правильно написать csv (с одним или несколькими значениями в строке и несколькими строками), вам не хватает newline="" при открытии файла (это хорошо задокументировано), чтобы правильно создать файл csv - отсутствие этого вводит пустую строку в ваш текущий вывод .

with open(StuGrade, 'w', newline = "") as f :  # add  newline = ""

Вам действительно не нужен модуль записи csv для создания файла с 1 вещью в строке:

with open("file.txt","w") as f:
    for word in k:               # dont use index iterating, use element itering
        f.write(word + "\n")

сделал бы это.


Fix/Demo для 2 значений в строке:

import csv 

k = ["ABC","5", "BCD","7", "CDE","42"]

StuGrade = "StuGrade.csv"
with open(StuGrade, 'w', newline = "") as f :  # added newline
    thewriter = csv.writer(f)

    # go over the range of input indexes and increase by 2       
    for idx in range(0, len(k), 2):
        # slice and write 2 values as 2 columns from your k list at once 
        thewriter.writerow( k[idx : idx+2]) 

print(open("StuGrade.csv").read())

Выход:

ABC,5
BCD,7
CDE,42

@ahmad для 1 элемента в строке не используйте csv - вместо этого используйте with open("file.txt","w") as f: for word in k: f.write(word + "\n") - или используйте thewriter.writerow( [ k[b] ] ), если у вас есть задание, вынуждающее вас использовать csv

Patrick Artner 10.04.2022 10:27

Другие вопросы по теме