Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从文本文件中读取行后python代码中的索引器_Python_Python 3.x - Fatal编程技术网

从文本文件中读取行后python代码中的索引器

从文本文件中读取行后python代码中的索引器,python,python-3.x,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:

有人能告诉我这个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
第16行,在
如果国家[0]=“T”:
索引器错误:字符串索引超出范围
如果国家[0]=“T”:
如果国家长度为零,则将崩溃。如果文件包含完全空白的行,则可能会发生这种情况

在添加到
国家/地区时,尝试过滤掉空行:

for line in f:
    line = line.strip()
    if line:
        countries.append(line)
如果国家[0]=“T”:
如果国家长度为零,则将崩溃。如果文件包含完全空白的行,则可能会发生这种情况

在添加到
国家/地区时,尝试过滤掉空行:

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

因为Kavin已经帮助您解决了问题,所以我只编写了一些代码来做同样的事情,但更像Python代码。 这是一种更具python风格的代码编写方式:

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

因为Kavin已经帮助您解决了问题,所以我只编写了一些代码来做同样的事情,但更像Python代码。 这是一种更具python风格的代码编写方式:

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

输入中有空行吗?关于错误,您不了解什么?你在寻求什么样的帮助?我敢打赌,一个被分配了相同作业的小组正在研究这个问题。这样一个“我在我的问题上投入了很低的努力”的问题,一个非常非常简单的答案,不可能在答案上得到3次即时的赞成票。你输入的任何空白行?你对错误有什么不理解?你在寻求什么样的帮助?我敢打赌,一个被分配了相同作业的小组正在研究这个问题。这样一个“我在我的问题上投入了很低的努力”的问题,用一个非常非常简单的答案,不可能在解决问题的答案上获得3张即时的赞成票。但这很奇怪,因为我还试图剥离第一个“for”循环下的空白行。这里的要点是,我们需要使用if语句来确保引擎盖下面不会隐藏任何空行。执行
line=line.strip()
不会确保
line
从不为空,也不会确保将空行追加到
国家或地区
“”.strip()
只会为您提供
“”
。问题已解决。但这很奇怪,因为我还试图剥离第一个“for”循环下的空白行。这里的要点是,我们需要使用if语句来确保引擎盖下面不会隐藏任何空行。执行
line=line.strip()
不会确保
line
从不为空,也不会确保将空行追加到
国家或地区<代码>“”.strip()
只会给你
“”
过滤器实际上,随着时间的推移,人们越来越不认为它像蟒蛇。如今,人们通常更倾向于使用列表理解。与其过滤(f,seq)
,不如执行
[x代表x,如果f(x)]
。该语言的作者,最初。@Kevin,是的,使用过滤器更像是函数式编程。使用过滤器也有它自己的优点,它生成一个生成器,而不是一个列表。当我谈到Pythonic时,实际上我指的是使用“with”语句,非常感谢您指出这一点。我使用的是Python3,看起来凯文有道理。执行李梦龙的代码,我得到了一些奇怪的东西:python3 Pythonic_countries.py只是手动列出(生成器),我已经更改了代码。请再次检查。如果line.startswith('T'),请使用
countries=[line.strip()作为f中的line,而不是
,如果您想保持它的美观,实际上
过滤器
随着时间的推移被认为是不太像Pythonic的。如今,人们通常更倾向于使用列表理解。与其过滤(f,seq)
,不如执行
[x代表x,如果f(x)]
。该语言的作者,最初。@Kevin,是的,使用过滤器更像是函数式编程。使用过滤器也有它自己的优点,它生成一个生成器,而不是一个列表。当我谈到Pythonic时,实际上我指的是使用“with”语句,非常感谢您指出这一点。我使用的是Python3,看起来凯文有道理。执行李梦龙的代码,我得到了一些奇怪的东西:python3 Pythonic_countries.py只是手动列出(生成器),我已经更改了代码。请再次检查。如果要保持美观,请使用
countries=[line.strip()(如果line.startswith('T'))代替f中的line