Форум сайта python.su
1
Есть 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)
Офлайн
20
А если так:
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') >>>
Офлайн
1
эм… что-то явно не то.
Мне нужно прочитать файл и полученную из него информацию перевести в список кортежа.
Решил задачу не сохранением значения в файл, а созданием глобальной переменной через функцию global
Но на будущие всё же интересно
Отредактировано paraman (Окт. 6, 2012 01:25:57)
Офлайн
857
paramanдостаточно использовать сериализацию вроде pickle
Решил задачу не сохранением значения в файл, а созданием глобальной переменной через функцию global
paramanон тебе привёл пример для строки, а прочитать файл в строку - можно
Мне нужно прочитать файл и полученную из него информацию перевести в список кортежа.
Офлайн
14
А зачем вообще нужен ast? Для написания DSL вроде шаблонов?
Офлайн