В Python текст из объекта ответа из модуля запросов не работает хорошо с модулем регулярных выражений? - PullRequest
1 голос
/ 06 апреля 2019

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

Этот код находит то, что я пытаюсь заменить правильно.

mib = r.text
blanklines = re.compile(r'\n+\s', re.DOTALL)
for line in blanklines.finditer(mib):
    ...

Этот код НЕ вносит никаких изменений в строку.

mib = r.text
blanklines = re.compile(r'\n+\s', re.DOTALL)
mib = blanklines.sub('\n', mib)

Этот код изменяет строку так, как я хочу.

mib = r.text
with open('rtext.txt', 'w') as tfile:
    tfile.write(mib)

with open('rtext.txt','r') as tfile:
    mib = tfile.read()

blanklines = re.compile(r'\n+\s', re.DOTALL)
mib = blanklines.sub('\n', mib)

Не думаю, что это ужасно - использовать эту работу, но я надеялся, что кто-нибудь здесь покажет мне, что я делаю неправильно. Я думаю, что это должно быть с текстом ответа, так как он прекрасно работает после записи в файл и последующего чтения.

1 Ответ

0 голосов
/ 08 апреля 2019

Как прокомментировано, ответ содержал довольно много разрывов строк, которые были написаны как \ r \ n, и я просто пропустил их.Внесение одного изменения mib = r.text.replace('\r', '') устранило всю проблему для меня.

И я не обязательно пытаюсь проанализировать весь файл MIB, так что то, что у меня сейчас работает, будет работать для меня.На самом деле я просто проверяю файл pcapng на наличие ловушек, и если у нас нет сохраненной информации OID, извлекая ее из репозитория на circitor.fr / Mibs .

Также, если у кого-то естьЛучшее репо, чем это, я бы оценил, потому что это может быть довольно медленным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...