如何在Python中的多个字符之间分割文本?

我有一个包含以下信息的日志文件:

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

其中,“ admin”是用户名,“ ******”是密码,“ 192.168.0.104”是摄像机IP,“ 554”是摄像机端口。我想分别提取这些值,并将这些值存储在不同的变量中,然后将这些变量解析为GUI。

由于该行中有多个字符,所以我不确定如何拆分它们。 有什么办法吗?

评论
ut_quo
ut_quo

You could use 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
点赞
评论
刺青
刺青

正规表达式怎么样?

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
点赞
评论