2013-04-17 3 views
1

Я пытаюсь прочитать в файле данных с нагрузкой линий значений и связанных с ними ошибок в нем, например:Очистить строку чтения из файла питона

(-5.63150902306 +/- 0.549562002684) * (9.62647766508 +/- 1.00395610402) 
(5.92097311289 +/- 0.79652553075) * (5.62917665811 +/- 0.772898764928)/(3.2342 +/- 2.4235) 

Я успешно считаны в «сегменты», используя следующее:

FileSegments = [lin.split() for line in File.readlines()] 

Но я бы также хотел, чтобы удалить фигурные скобки «(» «)» в то же время ... Я пытался

FileSegments = str([lin.split() for line in File.readlines()]).translate(None, ')(') 

Но это случайное возвращение только [, когда я пытаюсь его распечатать!

ответ

1

Вы только что заказ немного смешанный (также нет необходимости в File.readlines()

[line.translate(None, ')(').split() for line in File] 
0

Вы можете сделать что-то вдоль этих линий:

st='''\ 
(-5.63150902306 +/- 0.549562002684) * (9.62647766508 +/- 1.00395610402) 
(5.92097311289 +/- 0.79652553075) * (5.62917665811 +/- 0.772898764928)/(3.2342 +/- 2.4235)''' 

for line in st.splitlines(): 
    print 'line:',line 
    print line.replace('(','').replace(')','') 

Печатает:

line: (-5.63150902306 +/- 0.549562002684) * (9.62647766508 +/- 1.00395610402) 
-5.63150902306 +/- 0.549562002684 * 9.62647766508 +/- 1.00395610402 
line: (5.92097311289 +/- 0.79652553075) * (5.62917665811 +/- 0.772898764928)/(3.2342 +/- 2.4235) 
5.92097311289 +/- 0.79652553075 * 5.62917665811 +/- 0.772898764928/3.2342 +/- 2.4235 
0

Если вы хотите заменить круглые скобки, вы можете просто вызвать .replace() на строке.

file_segments = [line.replace('(','').replace(')','').split() for line in fh.readlines()] 

Для получения дополнительной информации о replace см String Replace.

Вы также можете использовать re.sub()

file_segments = [re.sub('[\(|\)]','', line).split() for line in fh.readlines()] 

Но обратите внимание, что это более интенсивно, чем просто .split().

Для получения дополнительной информации см. re.sub.