这是字符串:
IP = "http://username:password@192.168.0.66/mjpg/video.mjpg"
我想提取 @
和第三个 /
之间的 IP 地址,将其作为参数传递给函数。这是文本文件中数百行中的一行,我必须循环提取 IP 地址。
下面的代码不起作用,我也不知道为什么。如果我用 /mjpg
替换 /
并删除 (3) 它会工作,但 /
之后的视频流并不总是mjpg 并且可能是我正在处理的脚本中的数百个之一。重点是提取“@”和第三个“/”之间的子串。
print(IP[IP.find("@")+1:IP.find(("/"),3)])
有人可以发现错误或提出更好的方法吗?
最佳答案
您可以获取 @
之后第一次出现的 /
,而不是查找第三次出现的 /
>>> start = IP.find("@")
>>> end = IP.find("/", start)
>>> IP[start+1:end]
'192.168.0.66'
话虽如此,使用re.findall
更容易做到这一点
>>> import re
>>> re.findall(r'http:.*?//[^@]*@([0-9.]+)/', IP)
['192.168.0.66']
关于python - 如何从标记和第n次出现的另一个标记之间的python字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449459/