2015-04-27 6 views
-2

Ниже мой текущий код. Он должен читать в файле, сравнивать регулярное выражение и видеть, является ли вход из текстового файла правильным IPv4-адресом или нет. Он работает правильно, но только возвращает выход для последней строки входного файла. Например, если входной файл выглядит так:Python forloop только возвращает последнюю строку

10.0.0.0 
255.255.255.255 
168.192.0.0 

только вернется, что верно 168.192.0.0. ни один из других адресов. Спасибо.

** 

import re 

filename = input("Please enter the name of the file containing the input IP Addresses: ") 
fo = open(filename, "r") 


print() 
for line in open(filename): 
     pattern = '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$' 
m = re.match(pattern, line) 
if m is not None: 
     print("Match found - valid IP address: ", line, "\n") 
else: print("Error - no match - invalid IP address: ",line, "\n") 

fo.close 
+7

Ваш отступ беспорядок ... исправить –

ответ

1

Вам необходимо поставить соответствие регулярных выражений в for цикла:

for line in open(filename): 
     pattern = '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$' 
     m = re.match(pattern, line) 
     if m is not None: 
      print("Match found - valid IP address: ", line, "\n") 
     else: print("Error - no match - invalid IP address: ",line, "\n") 

fo.close 
0

Печать и re.match находятся вне цикла, следовательно, только последняя итерация распечатана

for line in open(filename): 
     pattern = '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$' 
     m = re.match(pattern, line) 
     if m is not None: 
      print("Match found - valid IP address: ", line, "\n") 
     else: print("Error - no match - invalid IP address: ",line, "\n") 
0

собирается сделать несколько изменений форматирования, лучше открыть файлы с with.

import re 
filename = input("Please enter the name of the file containing the input IP Addresses: ") 
with open(filename) as fo: 
    print() 
    pattern = '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$' 
    for line in open(filename): 
     if re.search(r"%s"%(pattern), line): 
      print("Match found - valid IP address: ", line, "\n") 
     else: print("Error - no match - invalid IP address: ",line, "\n") 
Смежные вопросы