Как прочитать файл CSV и пропустить строку заголовка

#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='')