2013-08-27 2 views
1

Так что я хочу преобразовать строку данных, которые я импортирую (из. TXT-файла) в новый формат. Я импортировать из текстового файла - например:Преобразование строки в последовательность пар кортежей

1231.123

2341,1210

342,12

5462.565

Я использую следующий код

>>> fileHandle = open ('text.txt', 'r') 
>>> str1 = fileHandle.read() 
>>> fileHandle.close() 
>>> print str1 
1231,123 
2341,1210 
342,12 
5462,565 

>>> list(str1) 
['1', '2', '3', '1', ',', '1', '2', '3', '\n', '2', '3', '4', '1', ',', '1', '2', '1', '0', '\n', '3', '4', '2', ',', '1', '2', '\n', '5', '4', '6', '2', ',', '5', '6', '5', '\n'] 

Но теперь я хочу, чтобы преобразовать его в следующий формат кортежа:

((1231, 123), (2341, 1210), (342,12), (5462, 565)) 

мне действительно нужно найти способ, чтобы преобразовать эти данные в формате непосредственно выше. Я был бы очень признателен за любую помощь!

Спасибо

ответ

3
with open('text.txt', 'r') as fp: 
    data = tuple(ast.literal_eval(line) for line in fp) 
+0

Это здорово - спасибо! Именно то, что мне нужно. – ThatGuy

+0

Еще раз спасибо. Теперь я могу быть немного жадным. Я создаю этот код python для версии Abaqus (программное обеспечение FEA), которая использует старую версию python (2.4), которая не распознает «с» утверждениями или «import ast» (или ast.literal_eval()). Есть ли способ построить эту же операцию без этих двух элементов? Спасибо! – ThatGuy

+0

Чтобы заменить 'с', просто закройте файл вручную после факта. Для синтаксического анализа просто разделите запятую и запустите полученные элементы через 'int()'. –

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