2014-12-11 3 views
0

У меня есть входной файл - file.txt:Python сортировки списка

Guten
('девять', 'ноябрь')
('шесть', 'девять')
конец

Моя программа питон:

aa = [] 
with open('file.txt', 'r') as F1: 
    for line in F1: 
     line = line.rstrip('\n') 
     aa.append(line) 
    print aa 

Я получаю выход как:

['guten', "('nine', 'november')", "('six', 'nine')", '0', 'end', ''] 

Но мой ожидается выход:

['guten', ('nine', 'november'), ('six', 'nine'), '0', 'end', ''] 

Может кто-нибудь сказать мне, где я неправильно? Ваша помощь будет полезна. Заранее спасибо.

+5

Может вам точно объясните, какие правила вы хотите использовать для сортировки данных и какие правила вы хотите использовать для интерпретации ввода? Кажется, вы хотите, чтобы строки, заключенные в '()' в текстовом файле, превращались в кортежи, хотя этот текстовый файл не является кодом Python? Но вы хотите, чтобы числа остались в виде строк? –

+0

Спасибо за ответ. Я изменил вопрос. Мне нужен этот вывод, чтобы я мог сортировать и получать окончательный результат. Вы можете мне помочь ?? – user3723056

+0

попробуйте запустить эту сортировку (['b', 'a', 'f', 'd', 'e', ​​(3, 4), 1, 4, 5]) ' – smac89

ответ

3

Хотя я не могу себе представить, как это было бы полезно, следующие будут делать то, что вы просите (учитывая ограниченные данные в файл, который вы дали нам):

import ast 
aa = [] 
with open('file.txt', 'r') as F1: 
    for line in F1: 
     line = line.rstrip('\n') 
     if line.startswith('('): 
      aa.append(ast.literal_eval(line)) # turn tuple strings into tuples 
     else: 
      aa.append(line)  
    print aa 
+0

Большое спасибо, это сработало. – user3723056

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