Как разделить текст на несколько символов в Python? - PullRequest
0 голосов
/ 09 мая 2020

У меня есть файл журнала со следующей информацией:

RTSP0 rtsp://admin:******@192.168.0.104:554/onvif1

где «admin» - имя пользователя, «******» - пароль, «192.168.0.104» - это IP-адрес камеры, а «554» - порт камеры. Я хочу извлечь эти значения отдельно и сохранить эти значения в разных переменных, которые позже будут проанализированы в GUI.

Поскольку в строке несколько символов, я не уверен, как я могу разделить их. Есть ли способ сделать это?

Ответы [ 2 ]

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

Как насчет регулярного выражения?

import re

regex = re.compile(r".*//(?P<username>\S+):(?P<password>.*)@(?P<ip_address>.*):(?P<port>.*)/")

data = "RTSP0 rtsp://admin:******@192.168.0.104:554/onvif1"

for match in regex.finditer(data):
    username = match.group('username')
    password = match.group('password')
    ip_address = match.group('ip_address')
    port = match.group('port')

    print(
        "Username: {0}\nPassword: {1}\nIP Address: {2}\nPort: {3}"
        "".format(username, password, ip_address, port)
    )

Результат:

Username: admin
Password: ******
IP Address: 192.168.0.104
Port: 554
0 голосов
/ 09 мая 2020

Вы можете использовать urllib.parse :

>>> from urllib.parse import urlparse
>>> o = urlparse('rtsp://admin:******@192.168.0.104:554/onvif1')
>>> o
ParseResult(scheme='rtsp', netloc='admin:******@192.168.0.104:554', path='/onvif1', params='', query='', fragment='')
>>> o.username
'admin'
>>> o.password
'******'
>>> o.hostname
'192.168.0.104'
>>> o.port
554
...