文件中特定于Python的查找

01咬

我正在尝试通过边学习边学习python,但是我的代码有问题。尝试执行代码,在其中输入IP的代码将检查IP是否在ips.txt文件中,但是当我添加例如“ 192.168.0.10”并且文件中已经是“ 192.168.0.100”时,它将显示,则txt文件中包含“ 192.168.0.10”,因为“ 10”是“ 100”编号的一部分。

相同的示例是“ dog”和“ dogs”,“ dog”基本上在“ dogs”内部,因此它将告诉您dog在文件中...

你能帮我吗?谢谢

IPs = IPs.read()
IP = input("Check IP: ")
if IP in IPs:
    print("IP is in the list.")
else:
    print("IP is not in the list.") ```
杰伊·莫迪

IPs.read()产生一个字符串。这意味着当您执行时IP in IPs,它会检查字符串是否IP为的子字符串IPs(它执行substring search)。在你的情况,通知"" in IPs"1" in IPs以及".1" in IPs将所有计算为True

您想要的是IPs一个字符串列表,可以通过以下方式实现:

IPs = IPs.read().splitlines()

这将读取输入并以换行符分隔字符串,因此如果文本文件包含:

192.168.0.10
192.168.0.9
192.168.0.7

IP将是:

["192.168.0.10", "192.168.0.9", "192.168.0.7"]

所以,现在,当你做IP in IPs它会linear search为价值IPIPs线性搜索需要O(n)时间,这里n是列表的长度。如果的顺序IPs无关紧要,并且您要进行大量查找,建议您通过将列表转换为一组IPs = set(IPs.read().splitlines())这样,无论执行什么操作IP in IPs,无论列表大小如何(即程序进行缩放),查找时间都是恒定的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章