Goldy Tomy Ответов: 1

Нужна помощь в восстановлении модуль питона


Я пытаюсь использовать модуль re для анализа файла. Я устал от трех версий кода, первые 2 версии не извлекают никаких O/P. Третья версия извлекает только одну строку. Кто-нибудь может взглянуть?

Данные в sample.txt это, как показано ниже. Сеть пуста после первой строки,и когда я запускаю по отдельности эти операторы в оболочке python, регулярное выражение работает.
**********************************************************************

Oregon Exchange BGP Route Viewer
route-views.oregon-ix.net / route-views.routeviews.org

Это оборудование является частью гранта NSF.
Пожалуйста, свяжитесь с нами help@routeviews.org если у вас есть вопросы, или
если вы хотите поделиться своим мнением.

Метрика Следующего Прыжка Сети . Весовой Путь LocPrf
* 64.48.0.0/16 173.205.57.234 0 53364 3257 2828 я

* 202.232.0.2 0 2497 2828 я

* 93.104.209.174 0 58901 51167 1299 2828 я

* 193.0.0.56 0 3333 2828 я

* 103.197.104.1 0 134708 3491 2828 я

* 132.198.255.253 0 1351 6939 2828 я

Что я уже пробовал:

Версия1:

импорт заново
файл = открыть('sample.txt', 'r')
файл X=.с readline()
а х:
ВАР = ре.метод findAll(Р'(?:\*|\*&и GT;) и\S+(\д+.\д+.\д+.\д+\/\д+\с+)?(\S+с) х\+и\D+и\S+(\д+\с+.+)[т. е.]',х)
файл X=.с readline()
print (var)
файл.рядом()

Версия2:

импорт заново
файл = открыть('sample.txt', 'r')
файл X=.читать()
ВАР = ре.метод findAll(Р'(?:\*|\*&и GT;) и\S+(\д+.\д+.\д+.\д+\/\д+\с+)?(\S+с) х\+и\D+и\S+(\д+\с+.+)[т. е.]',х)
print (var)
файл.рядом()
Версия_3:

импорт заново
файл = открыть('sample.txt', 'r')
файл X=.с readline()
а х:
var = re. search(r'(?:\*|\*>)\s+(\d+.\d+.\d+.\d+\/\d+\s+)? (\S+)\s+\d + \s+(\d + \s+.+) [ie]', x, re. M)
файл X=.с readline()
print (var. group (0))
файл.рядом()

1 Ответов

Рейтинг:
0

Richard MacCutchan

Я только что запустил ваш код, и он отлично работает, если не считать перечисления пустых записей:

[]
[]
[]
[]
[]
[]
[]
[]
[('64.48.0.0/16 ', '173.205.57.234', '53364 3257 2828 ')]
[]
[('', '202.232.0.2', '2497 2828 ')]
[]
[('', '93.104.209.174', '58901 51167 1299 2828 ')]
[]
[('', '193.0.0.56', '3333 2828 ')]
[]
[('', '103.197.104.1', '134708 3491 2828 ')]
[]
[('', '132.198.255.253', '1351 6939 2828 ')]


Это поможет, если вы поместите свой код в теги<pre & gt; Таким образом:
import re
file = open('sample.txt', 'r') 
x = file.readline()
while x:
    var = re.findall(r'(?:\*|\*>)\s+(\d+.\d+.\d+.\d+\/\d+\s+)?(\S+)\s+\d+\s+(\d+\s+.+)[ie]',x)
    x = file.readline()
    print(var)
file.close()


таким образом, мы можем увидеть, правильны ли ваши отступы.