PYTHON为什么这个for循环打印每隔一行

时间:2017-03-23 16:59:23

标签: python file for-loop skip

f=open('l.txt','r')

for line in f:
    f_list=f.readline().split(",")
    if f_list[5]=="":
        print(f_list)

该文件是一个列表,第五个元素是" Y"或空白,此循环仅打印每隔一行。为什么要跳过它们?谢谢。

该文件采用这种格式,但还有几百个我试图看到的 如果f [5]为Y或空白

#1,00/00/00,00:00,name,string,Y,string
#2,23/03/17,13:00,gfdfh,fdsdf,,kyl

2 个答案:

答案 0 :(得分:1)

答案很简单:在每一行上,列表的第6个元素都是空的!

如果你添加一小段代码来帮助调试:

f=open('l.txt','r')

for line in f:
    f_list=f.readline().split(",")
    print(f_list[5])
    if f_list[5]=="":
        print(f_list)

输出结果为:

Y

['#2', '23/03/17', '13:00', 'gfdfh', 'fdsdf', '', 'kyl']

您的代码检查列表的第6个元素是否等于:"" (空字符串)。如果列表的第6个元素为空,则打印出列表,如果它没有打印出列表。

在这种情况下,第一行的六个元素不为空,因此列表不会被打印。

要解决此问题,只需执行以下操作:

f=open('l.txt','r')

for line in f:
    f_list=f.readline().split(",")
    if f_list[5]=="" or f_list[5]=="Y":
        print(f_list)

您忘记检查它是否等于Y!

答案 1 :(得分:0)

对于文件中的每一行

f=open('N:\CA Folder\\firesideFixtures.txt','r')

for f_list in f.read().splitlines():
    f_list=f_list.split(",")
    if f_list[5]=="":
        print(f_list)

输出:

['2', '23/03/17', '13:00', 'gfdfh', 'fdsdf', '', 'kyl']

<强>建议:

readline()获取\n以及读取的行。

实施例,

我的textfile.txt是:

hello this is testing
test line 2

testline3

在这里阅读时,

f = open('textfile.txt','r') 

print f.readlines():
['hello this is testing\n', 'test line 2\n', '\n', 'testline3\n']

因此,您可以使用

print f.read().splitlines()

将给出

['hello this is testing', 'test line 2', '', 'testline3']      

希望这有帮助!