Получить весь текст между указанной строкой с помощью регулярного выражения - PullRequest
0 голосов
/ 01 мая 2020

Как я могу получить строку между 2 указанными строками в Python3, используя регулярное выражение?

b'SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.11\r\n'

желаемый результат:

>>> SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.11
# ipsort.py
import re

f = open("ssh.txt", "r")

line = f.readline()

for line in f:
    version = re.search(r"b'(.*?)\r\n'", line)
    new_file = open("ssh_versions.txt", "a")
    new_file.write(version)
    new_file.close()

Traceback (most recent call last):
  File "ipsort.py", line 11, in <module>
    new_file.write(version)
TypeError: write() argument must be str, not None

1 Ответ

1 голос
/ 01 мая 2020

Вам нужно удвоить \ в регулярном выражении, потому что в противном случае он соответствует символам CR и LF, а не буквальным \r и \n.

Вам также нужно использовать version.group(1), чтобы получить строка, которой соответствует группа захвата.

version = re.search(r"b'(.*?)\\r\\n'", line)
if version:
    with open("ssh_versions.txt", "a") as new_file:
        new_file.write(version.group(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...