Существует ли высокоуровневый способ чтения строк из выходного файла и распознавания типов по структуре содержимого? - PullRequest
0 голосов
/ 23 мая 2009

Предположим, у меня есть выходной файл, который я хочу прочитать, и каждая строка была создана путем объединения нескольких типов, добавления и добавления фигурных скобок списка,

[('tupleValueA','tupleValueB'), 'someString', ('anotherTupleA','anotherTupleB')]

Я хочу прочитать строки. Теперь я могу читать их и работать со строкой, чтобы назначать значения и типы, но мне было интересно, есть ли в Python метод более высокого уровня для этого.

После создания функции для этого я пытался найти подход более высокого уровня, но не нашел его.

Ответы [ 3 ]

2 голосов
/ 23 мая 2009

То, что вы ищете, это eval . Но имейте в виду, что эта функция будет оценивать и выполнять строки. Так что никогда не запускайте его на ненадежных входах!

>>> print eval("[('tupleValueA', 1), 'someString']")
[('tupleValueA', 1), 'someString']

Если у вас есть контроль над сценарием, который генерирует выходной файл, я бы посоветовал вам использовать кодировку json . Формат JSON очень похож на строковое представление списков и словарей в Python. И будет гораздо более безопасным и надежным для чтения.

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> json.loads('["foo", {"bar": ["baz", null, 1.0, 2]}]')
["foo", {"bar": ["baz", null, 1.0, 2]}]
0 голосов
/ 23 мая 2009

Вероятно, было бы лучше хранить данные с помощью модуля, например pickle , вместо использования обычных строк. Таким образом, вы избежите многих проблем, связанных с eval, и получите более надежное решение.

0 голосов
/ 23 мая 2009

Проблема, которую вы описываете, условно называется сериализация . JavaScript Object Notation (JSON) - это один из популярных протоколов сериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...