解析网络地址字符串

时间:2018-08-15 18:44:14

标签: python parsing

我正在使用python 3.5并具有如下所示的网络地址字符串:

tcp://10.1.2.3:45678

我想解析此字符串并提取协议,IP地址和端口号。

我知道我可以使用字符串拆分或正则表达式很容易地做到这一点,但是我想知道是否有Python包或模块可以做到这一点。我确定这些字符串有一个定义它们的规范,因此我对python模块感兴趣,而不是使用正则表达式或字符串解析。

1 个答案:

答案 0 :(得分:5)

您正在寻找urllib.parse.urlparse

In [1050]: import urllib

In [1051]: urllib.parse.urlparse('tcp://10.1.2.3:45678')
Out[1051]: ParseResult(scheme='tcp', netloc='10.1.2.3:45678', path='', params='', query='', fragment='')

In [1052]: url = urllib.parse.urlparse('tcp://10.1.2.3:45678')

In [1053]: url.scheme
Out[1053]: 'tcp'

In [1054]: url.netloc
Out[1054]: '10.1.2.3:45678'

In [1055]: host, _, port = url.netloc.partition(':')

In [1056]: host
Out[1056]: '10.1.2.3'

In [1057]: port
Out[1057]: '45678'