2015-10-28 19 views
0

Я все еще новичок в Python. Я читаю текстовый файл с разделителями табуляции, сгенерированный из программного обеспечения, чтобы отфильтровать набор значений. Но генерируемые значения все в формате, подобном формату с плавающей запятой IEEE. (например: 1.5656565656E + 02).отображение значений строк в зависимости от значений столбцов в python

Моя табуляцией файл что-то вроде этого (на самом деле это 250 столбцов. Примерно это так)

Time [s]  Offset_Angle    observability_Analysis 
0.00E+00  0.89040261167028E+00  0.00000000000000E+00 
4.32E+02  0.21319658757004E+00  0.00000000000000E+00 
8.64E+02  0.26803683992125E+00  0.00000000000000E+00 
1.30E+03  2.67379011780784E+02  1.00000000000000E+00 
1.73E+03  2.89704767087971E+02  1.00000000000000E+00 
2.16E+03  2.93302157473406E+02  1.00000000000000E+00 

Th Цель состоит в том, чтобы отфильтровать те Offset_Angle значения, которые имеют свои observability_Analysis как 1.0000000000000E + 00 Но на данный момент я пытаюсь напечатать номер строки, который имеет наблюдаемость_Анализ как 1.0000000000000E + 00.

Код я пытался, как это

with open('E:\\trialpy\\textfile.txt') as f: 
    reader = csv.reader(f, delimiter="\t") 
    d = list(reader) 

for ind in range(len(d)): 
    if d[ind][2] == "1.00000000000000E+00": 
     print ind 

Первый набор кода работает правильно. Отпечаток ind просто пуст. Он не дает никаких значений. Пожалуйста, помогите мне с этим. И извините, если вопрос очень глупый. Застрял в этом месте на какое-то время. Есть ли способ решить эту проблему или мне нужно перейти на Pandas

Спасибо.

+0

Этот код прекрасно работает на моей машине (Я получаю вывод '4 \ n5 \ n6 \ n'). Может быть, вы перепутали индексный столбец в файле с 250 столбцами? Попробуйте 'print' значение' d [ind] [2] 'перед' if' и проверьте, что на самом деле существует. –

+0

Если я попытаюсь распечатать значения перед оператором if, он печатает значения, как в файле. Не знаете, где проблема –

+0

Вы имеете в виду, что печатает все значения правильного столбца? Или он печатает больше, чем это? –

ответ

1

Проблема, кажется, что читатель Csv не может правильно обработать эти данные, так что каждая строка сохраняется в виде одной строки в списке (row) ...

with open('data.csv', 'r') as f1: 
    r = csv.reader(f1, delimiter='\t') 
    next(r, None) # skip first line 
    for row in r: 
     thirdc = row[0].split()[2] 
     if float(thirdc) > 0.0: 
      print(thirdc) 

    1.00000000000000E+00 
    1.00000000000000E+00 
    1.00000000000000E+00 
+0

Он работает, когда я конвертирую в float. Благодарю. –