2015-05-12 7 views
1

Я рассматриваю возможность использования читаемого пользователем формата файла для моего приложения Python. Прямо сейчас я использую pickle для хранения моих данных в двоичном формате. Я не уверен, если XML или JSON является путем, но в основном мой файл содержит список списков, выглядит следующим образом:Пользовательский формат файла для списка списков python

[1, 'the name of the set', [[1, 'data1', 'data2'],[2,'data3','data4']] 

Список держащегося другие списки, содержащие строки могут иметь несколько элементов (даже сотни). В принципе, я хотел бы иметь что-то, что имеет простой интерфейс для преобразования его в/из списка python, и мне нужны эти целые числа, чтобы оставаться целыми.

+0

как насчет 'json' – wim

+0

Вам нужно еще раз взглянуть на вашу структуру данных. Несколько вложенных 'list' с ведущим элементом нумерации не помогут вам создать хороший код. – TigerhawkT3

+0

[YAML] (http://pyyaml.org/) ftw - Гораздо приятнее читать для людей! –

ответ

2

Это уже буквальный JSON. JSON, вероятно, самый популярный формат там, и трудно спорить с его удобочитаемостью.

In [105]: my_list = [1, 'the name of the set', [[1, 'data1', 'data2'],[2,'data3','data4']]] 
In [106]: my_list == json.loads(json.dumps(my_list)) 
Out[106]: True 
+1

«трудно спорить с его разборчивостью» <- за исключением фигурных скобок, конечно :) –

+0

Прохладный не знал, что причина, accident :) Еще несколько вопросов: 1. Чтобы сделать его более разборчивым, могу ли я его форматировать (возможно, каждый элемент списка на новой строке), когда я вбрасываю его в файл? 2. Могу ли я записать его в файл без использования двоичного кода? Может ли это вызвать проблемы на разных платформах для вышеупомянутого форматирования? – user3056783

2

Я бы использовал YAML здесь конкретно PyYAML; IHMO гораздо лучше читать для людей!

Пример: (вручную)

foo: 
    - 1 
    - 2 
    - 3 

вложенности исключены из примера выше

Использование: yaml.dump() и друзей.

Демонстрация:

>>> import yaml 
>>> data = {"foo": [[1, 2, 3], [4, 5, 6]]} 
>>> print yaml.dump(data) 
foo: 
- [1, 2, 3] 
- [4, 5, 6] 

NB: Как JSON является подмножеством YAML ни будет сохранять сложные типы; поддерживаются только базовые типы; int, float, list, dict и str.

+0

На самом деле @JamesMills, YAML - это надмножество JSON: http://stackoverflow.com/a/1729545/1567452 – jwilner

+0

Извините неправильно - правильно :) –

+1

Что-то я никогда не использовал, но это аккуратный формат. –

 Смежные вопросы

  • Нет связанных вопросов^_^