2016-07-21 2 views
-5

Это, наверное, очень простая вещь, но я совершенно новый в Python, так жаль. Саз, у меня есть много файлов, содержащих этот тип текста:Как преобразовать текстовые строки в столбцы?

name1 
[1.0 2.0 3.0],[1.1 2.1 3.1] 

(каталог /data/text1/1.txt)

другой файл содержит, например,

name2 
[4.0 5.0 6.0],[4.1 5.1 6.1] 

(каталог /data/text2/2.txt)

и вывод должен быть:

name1 
1.0 1.1 
2.0 2.1 
3.0 3.1 
name2 
4.0 4.1 
5.0 5.1 
6.0 6.1 

Каков наилучший способ сделать это?

Я попытался написать код:

with open('1.txt','r+') as f: 
    for line in f: 
     a = line.split(',', 1) 
     new_line = line[0] + '\n' + line[1] 
     f.write(new_line) 

(. Это, наверное, очень глупо)

Ex.:(it's только две линии)

sm_CCC1OCO1 

[ 71.54252843 52.88596242 51.64903087],[ 62.07181336 44.1827499 42.9019055 ] 
+5

Здравствуйте, добро пожаловать в SO. Хотя мы будем рады помочь с конкретной проблемой в вашем коде, SO не является сервисом найма-разработчика, поэтому обычно вы должны показать, что вы пробовали до сих пор. – spectras

+0

Вы хотите сохранить полученную структуру в файле или просто обработать в python? –

+0

Фактически '' [1.0 2.0 3.0], [1.1 2.1 3.1] '' это не правильный список. Что именно вы хотите? –

ответ

1

Вы можете zip и re для решения вашей проблемы. Ниже приведен код:

>>> import re, os 
>>> for file in os.listdir("directory"): 
>>>  with open(file) as fp: 
>>>   for line in fp.readlines(): 
>>>   lists = [re.findall("\d+\.\d+",l) for l in line.split(',')] 
>>>   for a,b in zip(lists[0],lists[1]): 
>>>     print a, b 

Для файла с содержимым:

[1.0 2.0 3.0],[1.1 2.1 3.1] 

Выход:

1.0 1.1 
2.0 2.1 
3.0 3.1 

Надежда это то, что вас ожидает.

+0

Спасибо, это то, что я хочу, но проблема в том, что у меня есть ~ 200 текстовых файлов, поэтому я хотел бы сделать это так, чтобы не было необходимости ставить все числа в каждом скрипте. – cinnamon

+0

Вы можете перебирать все файлы в каталоге и напрямую обрабатывать содержимое файлов, а именно строк. – SunilT

+0

Я получил ошибку, которая для a, b в zip (списки [0], списки [1]): индекс списка вне диапазона. на третьей строке я должен указать имя моего файла вместо (файла) или нет? – cinnamon

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