#python #python-3.x
#python #python-3.x
Вопрос:
Я использую следующий код
import csv
with open('skill.csv', 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
# next(csv_reader)
for line in csv_reader:
print(line)
Вот что содержит csv:
Skill,amount_of_skill
First aid,50
Stealth,40
Он выводит:
OrderedDict([('Skill', 'First aid'), ('amount_of_skill', '50')])
OrderedDict([('Skill', 'Stealth'), ('amount_of_skill', '40')])
Как мне заставить его просто сказать:
First Aid 50
Stealth 40
Комментарии:
1. Почему вы вообще читаете строки в словаре?
Ответ №1:
Вы читаете как dict, но вам нужен простой csv.
Вот как это должно быть:
import csv
with open('skill.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
next(csv_reader) #to skip header
for line in csv_reader:
print(' '.join(line))
Ответ №2:
Проблема с вашим кодом заключается в том, что вы не получаете доступ к values
словарю, вы просто печатаете словарь, который содержит данные для каждой строки.
with open("skill.csv", "r") as csv_file:
reader = csv.DictReader(csv_file, delimiter=",")
for line in reader:
print(" ".join(line.values()))
Вывод:
First aid 50
Stealth 40
Вы также можете использовать оператор распаковки ( *
) в инструкции print:
print(*line.values())
Ответ №3:
Вы считываете файл csv в словарь.
Вам не нужна никакая библиотека для чтения csv.. Вы можете просто открыть файл и разделить поля запятой:
with open('skill.csv', 'r') as csv_file:
csv_reader = csv_file.readlines()
for line in csv_reader:
print(line.replace(',', ' '))
Вывод:
First aid 50
Stealth 40
Ответ №4:
Чисто для развлечения… если вы хотите разбить все это на одну строку, вы могли бы сделать:
print(*[i.replace(',', ' ') for i in open('skills.csv').readlines()[1:]], sep='')
Вывод:
First aid 50
Stealth 40
Читаемый … не совсем. Весело? Да!
Что-то более читаемое:
with open('skills.csv') as f:
lines = f.readlines()[1:]
print(*[i.replace(',', ' ') for i in lines], sep='')