特定于Python的查找文件

2024-09-28 01:22:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过边做边学的方式学习python,但我的代码有一个问题。试着做一个代码,输入IP,代码会检查IP是否在ips.txt文件中,但是当我添加例如“192.168.0.10”并且在文件中已经是“192.168.0.100”时,它会显示“192.168.0.10”在txt文件中,因为“10”是“100”数字的一部分

同样的例子是“狗”和“狗”,“狗”基本上在“狗”里面,所以它会告诉狗在文件中

你能帮我吗?谢谢

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.") ```

Tags: 文件the代码iniptxtis方式
1条回答
网友
1楼 · 发布于 2024-09-28 01:22:52

IPs.read()生成一个字符串。这意味着当您执行IP in IPs时,它将检查字符串IP是否是IPs的子字符串(它执行^{})。在您的情况下,请注意"" 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

IPs将是:

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

现在,当您执行IP in IPs时,它将^{}用于IPs中的值IP。线性搜索需要O(n)时间,其中n是列表的长度。如果IPs的顺序无关紧要,并且您进行了大量查找,我建议通过IPs = set(IPs.read().splitlines())将列表转换为一个集合。这样,当您执行IP in IPs操作时,无论列表大小如何,查找时间都是恒定的(也称为程序go zoom)

相关问题 更多 >

    热门问题