2015-06-24 2 views
0

У меня есть файл данных значений, некоторые из которых были добавлены позже, которые находятся в форме: 999999.0, поэтому я могу выбрать их для изменения.чтение в файлах в python для поиска индексов определенных элементов

тестовых данных я использую:

0.0 
0.0 
0.0 
0.0 
999999.0 
999999.0 
999999.0 
999999.0 
999999.0 
0.0 
0.0 
0.0 
0.0 
0.0 

Мне нужно найти индексы в 999999.0 записи и использовали:

for i, j in enumerate(testdata): 
    if j == 999999.0: 
     print i 

, который работает, когда я ввожу данные по рука в виде списка:

testdata = [0.0, 0.0, 0.0, 0.0, 999999.0, 999999.0, 999999.0, 999999.0, 999999.0, 0.0, 0.0, 0.0, 0.0, 0.0] 

Но когда я прочитал в данных из файла:

data = open("C: test.txt") 
testdata = data.readlines() 

Не работает! (Я не получаю никаких ошибок, просто ничего не печатает)

Как я могу прочитать данные, чтобы найти индексы, или есть другой способ найти индексы без изменения чтения?

+1

Обратите внимание, что ваши данные, введенные вручную содержит 'float' объекты, в то время как данные, которые вы' read' из файла будет ** 'str' объекты ** ... – jonrsharpe

ответ

3

Когда вы читаете файл, его содержимое возвращается в виде списка строк. Вам нужно преобразовать строки в числа, если вы хотите рассматривать их как таковые.

for i, j in enumerate(testdata): 
    if float(j) == 999999.0: 
     print i 

будет работать.

+2

(«псевдоним») тип «float», используемый в вычислениях, по своей сути является неточным, поэтому лучше избегать проверки равенства на поплавках. В этом случае вы можете просто оставить исходное значение в виде строки и протестировать «999999.0». –

1

Данные считываются как строка. Либо сделать:

if j=='999999.0': 

или

if float(j)==999999.0: 
Смежные вопросы