簡體   English   中英

數據解析和字符串索引超出范圍錯誤

[英]Data parsing and string index out of range error

我是編程新手,剛開始學習數據解析。
我編寫了一個程序來搜索和打印以輸入字母開頭的單詞,並從.txt文件中解析數據,但該程序僅顯示帶有字母ag正確結果,並且

IndexError:string index out of range任何其他字母IndexError:string index out of range

以下來自python(3.5.1)和指向單詞列表的鏈接https://raw.githubusercontent.com/mohdomama/Scrabble-C/master/Dict.txt

def main():
    #read file
    file = open("dict.txt","r")
    lines = file.readlines()
    file.close()
    word = input("Choose the alphabet")
    for line in lines:
        line = line.strip()
        if line[0] == word:
           print(line)

main()                                                                          

你有點不對勁。 readlines()讀取整個文件並按行分割,然后返回lines列表。 然后對其進行迭代,將返回字符串對象

因此,例如,讀取文件可以等於f:

f = ['first line', 'two line', 'third line']
for line in f:
    print line  # 'first line' (string)

因此比較line [0]與執行'first line'[0] ='f'相同

如果要比較單詞,則需要將行分成單詞。 您可以通過以下方式做到這一點:

for line in f:
    words = line.split()  # ['first', 'line']
    words[0] == word:
        print word

當您看到給定對象的IndexError ,請首先檢查該對象的存在/“真實性”。 空列表,空字符串等都不是真實的。

所以代替:

if line[0] == word:

嘗試:

if line and line[0] == word:

當第一次檢查失敗( if line )時,它將不會繼續檢查索引( line[0] ),因為Python的and語句要求BOTH條件均為True

暫無
暫無

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

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