2017-03-23 8 views
-1
f=open('l.txt','r') 

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

ファイルはリストで、5番目の要素は「Y」または空白です。このループは1行おきにのみ印刷します。なぜそれをスキップしていますか?ありがとう。PYTHONこれはループごとに1行おきに印刷されるのはなぜですか?

ファイルは、この形式ではあるが、数百の以上イムファイル

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) 

に[5] YであるF場合 を確認しようとしているか、すべての行については

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

フィクスチャとは何ですか? –

+0

@WenlongLiuそして 'fixture_list'。 – BoobyTrap

+0

** firesideFixtures.txt **の内容を追加してください。 6行目の要素が1行おきに ""(空文字列)に等しくないため、1行おきに印刷する理由の1つです。 –

答えて

0

空白があります出力:

['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']  

1

答えは非常に簡単です: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番目の要素がない場合は、リストを出力しません。

この場合、最初の行の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に等しいのですかどうかをチェックするのを忘れました!

関連する問題