2016-10-23 7 views
1

ファイルのすべての行が左詰めである場合に真を返す関数を書いています。ここに私のコードは、誰かが、私は間違いを犯していますかどのように私はここに、この関数を実行する必要がありますどこに私を伝えることができ、私がこれまでにやっていることです。ファイルが左詰めであるかどうかをチェックする方法

my_file = open("ex4.py", 'r') 
def justified(my_file): 
    for line in my_file: 
     if(line[0:2] == ' '): 
      result = False 

     else: 
      result = True 
    return result 

答えて

1

あなたがすべき短絡あなたconditional-if。あなたのファイルの最終行が正当である限り、結果はTrueに設定されているようです。さらに、空白のチェックは正確には機能しませんが、あなたが渡す部分文字列の空白をチェックする.isspace()のような関数を使うことができます。最後に、取得している部分文字列が実際には2文字で、1文字ではないことに注意してください。

my_file = open("ex4.py", 'r') 
def justified(my_file): 
    for line in my_file: 
     if line[0:1].isspace(): 
      return False 
    return True 

これは、ファイルが左詰めではないことを知ったらすぐにファイル全体を解析する必要がないという利点があります。

また、ファイルを閉じるときにファイルを操作するときに、この設定を使用すると便利です。

with open("ex4.py", 'r') as file: 
    for line in file: 
     if line[0:1].isspace(): 
      return False 
    return True 
+0

いますが、それは常に左寄せされていない –

+0

まあラインがあってもtrueを返します確認した場合、それは問題ではありません...それは1つの問題ですが、あなたが正しいです、空白がチェックされている方法は動作しません。実際に実行して正しい結果を返すようにコードを更新しました。 –

3

は最初の2文字をチェックします。あなたの説明によると、最初の文字はline[0] == ' 'です。

また、見つけたらさらに読む必要はありません。それ以外の場合は、オーバーライドできます。

def justified(my_file): 
    return not any(line[0] == ' ' for line in my_file) 

アップデート:コメントで指摘したように、我々はそのようなことを書くことができます:次に

def justified(my_file): 
    return not any(line.startswith(' ') for line in my_file) 

、それは自然言語に非常に似て読み込みます。

+0

ありがとうございました –

+1

入力ファイルもタブでインデントすることができますので、それと比較する必要もあります: 'line [0] == ''またはline [0] == '\ t'' –

+0

これはクラッシュします'\ t''の 'line [:1]'を使って空行を修正します。 – thebjorn

0

あなたがチェックでちょうどスペース以外の空白文字を検討したいと思うかもしれません:それは空白で始まる行を見つけ次第、返し

import string 

whitespace = set(string.whitespace) 

def justified(f): 
    for line in f: 
     if line[0] in whitespace: 
      return False 
    return True 

を。

この

は、このコードを単純化することができます。

def justified(f): 
    return not any(line[0] in whitespace for line in f) 

これは、空行を扱います、つまりは新しい行(\n)、キャリッジリターン(\r)(その結果、両方\r\n)で始まるものを正当化されていないと。あなたが空の行を無視したい場合は、セットから関連する文字を削除できます。

whitespace = set(string.whitespace) - {'\n', '\r'} 
関連する問題