Ответ 1
Ниже приведены некоторые минимальные полные примеры того, как читать файлы CSV и как писать файлы CSV с помощью Python.
Python 2 + 3: Чтение CSV файла
Pure Python
# -*- coding: utf-8 -*-
import csv
# Define data
data = [(1, "A towel,", 1.0),
(42, " it says, ", 2.0),
(1337, "is about the most ", -1),
(0, "massively useful thing ", 123),
(-2, "an interstellar hitchhiker can have.", 3)]
# Write CSV file
with open('test.csv', 'w') as fp:
writer = csv.writer(fp, delimiter=',')
# writer.writerow(["your", "header", "foo"]) # write header
writer.writerows(data)
# Read CSV file
with open('test.csv', 'r') as fp:
reader = csv.reader(fp, delimiter=',', quotechar='"')
# next(reader, None) # skip the headers
data_read = [row for row in reader]
print(data_read)
После этого содержимое data_read
равно
[['1', 'A towel,', '1.0'],
['42', ' it says, ', '2.0'],
['1337', 'is about the most ', '-1'],
['0', 'massively useful thing ', '123'],
['-2', 'an interstellar hitchhiker can have.', '3']]
Юникод и Python 2.X
Если вы хотите написать Юникод, вам нужно установить unicodecsv
. Do не открыть файл с помощью codecs.open
, а просто с помощью open
. Напишите его с помощью
import unicodecsv as csv
# Write CSV file
with open('test.csv', 'w') as fp:
writer = csv.writer(fp, encoding='utf-8')
# writer.writerow(["your", "header", "foo"]) # write header
writer.writerows(data)
Похожие
- Как записать данные в формат csv как строку (не файл)?
- Как я могу использовать io.StringIO() с модулем csv?: Это интересно, если вы хотите использовать CSV на лету с Flask, без фактического хранения CSV на сервере.
Pandas
import pandas as pd
# Read the CSV into a pandas data frame (df)
# With a df you can do many things
# most important: visualize data with Seaborn
df = pd.read_csv('myfile.csv', sep=',')
print(df)
# Or export it in many ways, e.g. a list of tuples
tuples = [tuple(x) for x in df.values]
# or export it as a list of dicts
dicts = df.to_dict().values()
Подробнее см. read_csv
docs. Обратите внимание, что pandas автоматически появляется, если есть строка заголовка, но вы также можете установить ее вручную.
Если вы не слышали о Seaborn, я рекомендую посмотреть на него.
Другие
Чтение CSV файлов поддерживается рядом других библиотек, например:
Созданный файл CSV
1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3
Общие окончания файла
.csv
Работа с данными
После чтения файла CSV в список кортежей /dicts или pandas dataframe он просто работает с такими данными. Ничего особенного в CSV.
Альтернативы
- JSON: Приятно писать человекочитаемые данные; ОЧЕНЬ широко используется (читать и писать)
- CSV: супер простой формат (чтение и запись)
- YAML: приятно читать, подобно JSON (читать и писать)
- pickle: формат сериализации Python (чтение и запись)
- MessagePack (Пакет Python): более компактное представление (читать и писать)
- HDF5 (Пакет Python): Nice для матриц (читать и писать)
- XML: существует слишком * sigh * (читать и написать)
Для вашего приложения может быть важно следующее:
- Поддержка другими языками программирования
- Производительность чтения/записи
- Компактность (размер файла)
См. также: Сравнение форматов сериализации данных
Если вы скорее ищете способ создания файлов конфигурации, вы можете прочитать мою короткую статью Конфигурационные файлы в Python