数据解析和字符串索引超出范围错误

时间:2017-09-12 18:37:58

标签: python python-3.x parsing

我是编程新手,我刚开始学习数据解析 我编写了一个程序,用于搜索和打印以输入字母开头的单词,解析来自.txt文件的数据,但它只显示带有字母a-g的正确结果,并且

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()                                                                          

2 个答案:

答案 0 :(得分:1)

你觉得有点不对劲。 readlines()立即读入整个文件并按行拆分,并返回列表。然后迭代它返回字符串对象

例如,读取文件可能等于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

答案 1 :(得分:-1)

当您看到给定对象的IndexError时,请先检查对象的存在/“真实性”。空列表,空字符串等不是Truthy。

所以而不是:

if line[0] == word:

尝试:

if line and line[0] == word:

当第一次检查失败(if line)时,它将不会继续检查索引(line[0]),因为Python的and语句要求两个条件都是True