簡體   English   中英

基於輸入的 txt 文件搜索器會根據輸入觸發 else 語句

[英]input based txt file searcher results in triggering else statement depending on the input

with open("10kkpw.txt", "r", encoding="utf-8") as f:
    text = f.read()

for line in text:
    search = input("What are you looking for ")
    if search in line:
        print(line)
    else:
        print("Nope")
        break

你好,

我有一個主要的(從我的角度來看)問題。 我試圖對我的搜索器進行編碼,但遇到了一個奇怪的問題。

如您所見,我的程序打開了一個文本文件,該文件被預先確定為 open function 的參數。 目前沒有什么了不起的。 文本文件由一個包含數據的列表組成。

  1. 當我嘗試打印出“文本”變量時,它會打印出一個列表,它看起來就像在文本文件中一樣。
  2. 當我嘗試使用 for 循環打印出文本變量時
for line in text:
    print(line)

它開始獨立打印出每個字符。

這就是為什么我將“文本”變量更改為

text = f.read().splitlines()

當我想在“for循環”中使用 if/else 語句時,問題就開始了:

即使是最簡單的形式

for line in text:
    search = "a"
    if search in line:
       print(line)
    else:
        print("nope")
    break

它直接進入“else”語句並將“nope”打印為 output。 它實際上在該特定文件中找到某些內容的唯一情況是當我嘗試查找“1”時。

然而,在不同的文件中,它有時能夠找到更多的文件,但它不願意找到除此之外的任何東西,即使該文件實際上具有我正在尋找的字符串。 另一方面,該腳本可以在不同的文件中找到某些不是數字的字符。

這種奇怪行為的原因可能是什么? 或者它可能按預期工作?

問候,丹尼爾。

您是否嘗試過將read()切換到readlines() 如果您只使用read() ,它將為您提供與\n連接在一起的所有行。

with open("10kkpw.txt", "r", encoding="utf-8") as f:
    text = f.readlines()
print(text)

for line in text:
    search = input("What are you looking for ")
    if search in line:
        print(line)
    else:
        print("Nope")
        break

我注意到您確實嘗試f.read().splitlines() ,這應該是等效的。 如果您可以提供示例文本文件的前幾行,則可能會提供有助於調試的信息。

暫無
暫無

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

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