2016-02-24 2 views
-2

У меня есть список регистраций в Великобритании (ниже),Проверка строки из файла (одной строки) в списке

list1 = [BD51SMR] 

У меня также есть файл «полный файл»,

complete_file = open('Complete.txt', 'r') 

Внутри файла есть регистрация (те же, что и в списке) на одной строке, и связанная с ней скорость на следующей строке.

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

for line in complete_file: 
    if line in list1: 
     print('Line in list') 
    else: 
     print('Line not in list') 
     #do something with the line(which should be the speed) 

Однако оба раза он говорит: «Line не в списке», несмотря на то, что полный файл имеет регистрацию «BD51SMR», которая находится в списке! Может кто-нибудь мне помочь?

+2

1. 'list1' не является допустимым списком. 2. Он также не может быть применим. 3. 'line', вероятно, имеет' '\ n'' в конце. – jonrsharpe

+0

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

+0

Довольно много да, но это должно быть сделано несколько раз, то есть у меня есть несколько комплектов регистраций и скоростей в файле расположены так: рег скорость рег скорость и т.д. на новых линиях для каждой Изотерм/скорость –

ответ

0

Что-то вроде этого

for line in complete_file.readlines(): 
    print "hey user. the this line is ",line 
    if line.split(',')[0] in list1: 
     print('Line in list') 
    else: 
     print('Line not in list') 
     #do something with the line(which should be the speed) 
+0

Он дает сообщение об ошибке «IndexError: индекс списка за пределами диапазона» –

+0

Я предположил, что вы имели значения, разделенные запятой – kilojoules

0

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

with open('complete.txt', 'r') as f: 
    lines = f.readlines() 

registrations = ['BD03DF', 'FOHEFLS'] 
i = 0 
speeds = {} 
while i < len(lines): 
    reg = lines[i].strip() 
    i += 1 
    if reg in registrations: 
     speed = lines[i].strip() 
     speeds[reg] = speed 
     i += 1 
Смежные вопросы