Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 5, 2012 22:14:22

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Чтение из файла и запись в список

Есть txt файл в котором есть запись вида (список кортежей)

[('text', '10', 'text'), ('text', '30', 'text'), ('text', '2 - 99', 'text'), ('text', '7 - 0', 'text')]
Как мне её прочитать и записать как список кортежа?
Попробовал(нагуглил) так, но не вышло:

c = [('text', '10', 'text'), ('text', '30', 'text'), ('text', '2 - 99', 'text'), ('text', '7 - 0', 'text')]
print c[0]
text = []
for line in open("wdl_info_zip.txt", "r").read().split("\n"):
    for x in line[1:len(line)-1].split("]["):
        if x:
            print text.append(x)
print text[0]

Получаю не то, что нужно
('text', ‘10’, ‘text’) - нужно это
None
('text', ‘10’, ‘text’), ('text', ‘30’, ‘text’), ('text', ‘2 - 99’, ‘text’), ('text', ‘7 - 0’, ‘text’) - получаю это

Подскажите решение. Спасибо за потраченное время.

Отредактировано paraman (Окт. 5, 2012 22:20:56)

Офлайн

#2 Окт. 5, 2012 23:26:11

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

Чтение из файла и запись в список

А если так:
http://docs.python.org/library/ast.html#ast.literal_eval

Safely evaluate an expression node or a string containing a Python expression. The string or node provided may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.
>>> demo = """[('t1','10','t1'), ('t2', '20', 't2')]
... [('t3', '30', 't3'), ('t4', '40', 't4')]"""
>>> import ast
>>> x = []
>>> for line in demo.splitlines():
...     x.extend(ast.literal_eval(line))
...
>>> x[0]
('t1', '10', 't1')
>>> x
[('t1', '10', 't1'), ('t2', '20', 't2'), ('t3', '30', 't3'), ('t4', '40', 't4')]
>>> x[1]
('t2', '20', 't2')
>>>

Офлайн

#3 Окт. 6, 2012 00:40:09

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Чтение из файла и запись в список

эм… что-то явно не то.
Мне нужно прочитать файл и полученную из него информацию перевести в список кортежа.

Решил задачу не сохранением значения в файл, а созданием глобальной переменной через функцию global

Но на будущие всё же интересно

Отредактировано paraman (Окт. 6, 2012 01:25:57)

Офлайн

#4 Окт. 6, 2012 14:21:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Чтение из файла и запись в список

paraman
Решил задачу не сохранением значения в файл, а созданием глобальной переменной через функцию global
достаточно использовать сериализацию вроде pickle

paraman
Мне нужно прочитать файл и полученную из него информацию перевести в список кортежа.
он тебе привёл пример для строки, а прочитать файл в строку - можно



Офлайн

#5 Окт. 7, 2012 00:57:55

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Чтение из файла и запись в список

А зачем вообще нужен ast? Для написания DSL вроде шаблонов?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version