Работа с текстовым табличным форматом CSV в Python

В общем случае файл в CSV-формате выглядит очень просто:

first name,last name,module1,module2,module3,description
student,best,100,100,100,Excellent score
student,good,90,"90,2",100,"Good score
but could do better"
Greg,Dean,70,80,90,"Good job, Greg"
Wirt,Wood,80,80.2,80,Nicely done
Greg,Dean,70,80,90,"Good job, Greg"
Wirt,Wood,80,80.2,80,Nicely done
"Greg","Dean","70","80","90","Good job, Greg"
"Wirt","Wood","80","80.2","80","Nicely done"
"Greg","Dean",70,80,90,"Good job, Greg"
"Wirt","Wood",80,80.2,80,"Nicely done"

Используя CSV-формат всегда можно изолировать отдельное значение, используя двойные кавычки.

В языке Python есть встроенная библиотека csv для работы с файлами в таком формате:
import csv
with open("example.csv") as f: reader = csv.reader(f) for row in reader: print(row)

Библиотека csv может нормально обрабатывать перенос строки в значениях.

Можно явно указать знак разделителя или какой символ использовать вместо кавычки:
import csv

with open("example.tsv") as f:
    reader = csv.reader(f, delimiter="\t")
    for row in reader:
        print(row)

Данный модуль позволяет данные не только считывать, но и записывать:
students = [
    ["Greg", "Dean", 70, 80, 90, "Good job, Greg"],
    ["Wirt", "Wood", 80, 80.2, 80, "Nicely done"]
]

with open("example.csv", "a") as f:
    writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerows(students)
Writer знает, когда нужно заключить значение в кавычки, потому что например оно содержит в себе специальный символ, который является разделителем. Для того чтобы поместить в кавычки все значения нужно передать флаг csv.QUOTE_ALL. А csv.QUOTE_NONNUMERIC означает поместить все не числовые значения внутрь кавычек.

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

Отправить комментарий