从文本文件中读取行后,python代码中的IndexError

时间:2017-04-05 12:52:39

标签: python python-3.x

有人可以告诉我这个python代码出了什么问题吗?它看起来很愚蠢,因为代码非常简单,但我是编码的初学者,希望可以理解。

f = open("countries.txt", "r")

countries = []

for line in f:
    line = line.strip()
    countries.append(line)

f.close()

print(countries)
print(len(countries))

for country in countries:
    if country[0] == "T":
        print(country)

我一直收到以下错误:

 line 16, in <module>
    if country[0] == "T":
IndexError: string index out of range

2 个答案:

答案 0 :(得分:6)

如果if country[0] == "T":的长度为零,则

country会崩溃。如果您的文件包含完全空行,则可能会发生这种情况。

尝试在追加到countries时过滤掉空行:

for line in f:
    line = line.strip()
    if line:
        countries.append(line)

答案 1 :(得分:0)

由于Kavin已经帮助您解决了问题,我只是写了一些代码来做同样的事情,但更像是Python代码。 这是编写代码的更Pythonic方式:

with open('countries.txt', 'r') as f:
    countries = list(filter(lambda c: c.startswith('T'), (line.strip() for line in f.readlines())))
    print(countries)