我是编程新手,我刚开始学习数据解析
我编写了一个程序,用于搜索和打印以输入字母开头的单词,解析来自.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()
答案 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
。