2016-05-02 2 views
0

У меня есть текстовый файл, который выглядит следующим образом:организации грязный текстовый файл

0.000E+00 0.000E+00 0.000E+00 0.000E+00 
0.000E+00 0.000E+00 0.000E+00 0.000E+00 
0.000E+00 0.000E+00 0.000E+00 0.000E+00 
0.147E-01-0.158E-01-0.707E-02 0.173E-01 
-0.593E-01 0.111E+00 0.153E+00 0.155E+00 
0.859E-01-0.664E-01-0.281E+00-0.497E+00 
-0.626E+00-0.587E+00-0.347E+00 0.560E-01 

Это очень длинный файл, так что я не могу сделать это вручную. Как вы можете видеть, некоторые из чисел имеют пробелы между ними, а другие (отрицательные значения) - нет. Когда я пытаюсь его прочитать, я не могу найти подходящий способ разделить значения. Если я выбираю delimiter = '-', мой скрипт считывает значения, имеющие пробелы между ними как одно значение. Если я выбираю delimiter = '', мой скрипт делает то же самое с значениями, которые преобразуются в мины. Хорошо ли читать текст и иметь возможность отличать ценности?

мой сценарий:

inf=open("data","r") 
for columns in (raw.strip().split() for raw in inf): 
    print (columns[0]) 

ответ

7

Это не самое оптимальное решение, но попробовать это:

normalized_file_content = file_content.replace('-', ' -').replace('E -', 'E-') 

Это добавит пробел перед отрицательными числами, а не между знаком E и -.

+0

, что выглядит хорошо, но где мне нужно, чтобы добавить его в мой сценарий? – GuyB

+0

Что-то вроде этого: 'для столбцов в (raw.strip(). Split() для raw в inf.replace ('-', '-'). Replace ('E -', 'E-')):' – sc3w

0

Я предлагаю использовать регулярное выражение

for row in data: 
    print map(float, re.findall('-?\d\.\d{3}E[+-]\d{2}', row) 
Смежные вопросы