簡體   English   中英

Python 具體在文件中查找

[英]Python specific find in file

我正在嘗試通過邊做邊學來學習 python,但我的代碼有問題。 嘗試執行代碼,在其中輸入 IP 並且代碼將檢查 IP 是否在 ips.txt 文件中,但是當我添加例如“192.168.0.10”並且文件中已經是“192.168.0.10”時,它將顯示,“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.") ```

IPs.read()產生一個字符串。 這意味着當您IP in IPs ,它正在檢查字符串IP是否是IPs的 substring (它執行substring search 在您的情況下,請注意 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

IP 將是:

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

因此,現在,當您IP in IPs ,它將linear search IPs中的值IP 線性搜索需要O(n)時間,其中n是列表的長度。 如果IPs的順序無關緊要並且您要進行大量查找,我建議通過IPs = set(IPs.read().splitlines())將列表轉換為集合。 這樣,當您IP in IPs時,查找時間是恆定的,無論列表的大小(又名程序 go 縮放)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM