2016-05-05 7 views
0

は私がテキストファイルで文字列メソッドを使用するには?

  • 大文字

  • 小文字

  • の数の数を見つける必要があるプログラムを記述する必要は数字

  • の数空白文字の数

テキストファイル内の210

と私はそれが私の構文エラーを与えるスクリプトを実行しようとするたびに私の現在のコードでは、しかし

def lowercase(line_list): 

    print("Lower case Letters: ", sum(1 for x in line_list if x.islower)) 


def uppercase(line_list): 

    print("Upper case Letters: ", sum(1 for c in line_list if c.isupper()) 



def numbers(line_list): 

    print("Numbers: ", sum(1 for b in line_list if b.isdigit()) 


def whitespace(line_list): 

    print("Spaces: ", sum(1 for y in line_list if y.isspace()) 


def main(): 

    in_file = open("text.txt", "r") 

    line = in_file.readline() 

    line_list = line.split() 

    lowercase(line_list) 

    uppercase(line_list) 

    numbers(line_list) 

    whitespace(line_list) 

    in_file.close() 


main() 

です。私が間違っていることはありますか?

+1

エラートレース – tknickman

+0

を入力してください。プログラムにエラーがあります:無効な構文です。それはdefテキストをハイライト表示します – Carl

+0

'islower'は括弧を欠いています –

答えて

2

今のところ、lowercase関数に構文エラーがあります(関数呼び出しの括弧がありませんislower)。しかし、あなたのmain機能にもいくつかの問題があります。今は、ファイルの1行だけを読み込んでいます。また、その行を分割しています(splitはデフォルトでスペースを使用して分割されているため、スペースを失うことになります)。あなたが一本だけでなく、すべてを読むことを試みているなら。これを試してください:

def main(): 
    lower_case = 0 
    upper_case = 0 
    numbers = 0 
    whitespace = 0 
    with open("text.txt", "r") as in_file: 
     for line in in_file: 
      lower_case += sum(1 for x in line if x.islower()) 
      upper_case += sum(1 for x in line if x.isupper()) 
      numbers += sum(1 for x in line if x.isdigit()) 
      whitespace += sum(1 for x in line if x.isspace()) 

    print 'Lower case Letters: %s' % lower_case 
    print 'Upper case Letters: %s' % upper_case 
    print 'Numbers: %s' % numbers 
    print 'Spaces: %s' % spaces 


main() 
+0

ああ、本当に良いコール@ cricket_007、私はステップの面で考えていました。リストの理解を使って、それを合計します。しかし、あなたは正しいです - あなたはすべてのリストステップをすべてスキップすることができます。 – tknickman

+1

これはジェネレータ式なので、リストを作成する必要はありません。また、テストではなく 'x in line'を意味すると思います。 –

+0

あなたのプリントステートメントに'%s'の代わりに '%d'が必要です。 –

0

ここでは、構文エラーが解決されたコードを示します。 閉じ括弧がいくつかの場所で欠落しています。

def lowercase(line_list): 

    print("Lower case Letters: ", sum(1 for x in line_list if x.islower)) 


def uppercase(line_list): 

    print("Upper case Letters: ", sum(1 for c in line_list if c.isupper())) 


def numbers(line_list): 

    print("Numbers: ", sum(1 for b in line_list if b.isdigit())) 


def whitespace(line_list): 

    print("Spaces: ", sum(1 for y in line_list if y.isspace())) 


def main(): 

    in_file = open("text.txt", "r") 

    line = in_file.readline() 

    line_list = line.split() 

    lowercase(line_list) 

    uppercase(line_list) 

    numbers(line_list) 

    whitespace(line_list) 

    in_file.close() 

main() 

注:これはあなたが直面したエラーに対する解決策であり、同じことを確認する必要があるロジック問題のために他のエラーが発生する可能性があります。

+0

'x.islower'はまだそれが私のために正常に実行されるエラー –

+0

ある、 '( '小文字:'、1) ( '大文字:'、0) ( '数字'、0) ( 'Spaces:'、0) – Murali

+1

実際に関数を呼び出す必要があると思いますが、それ以外の場合は常にtrueを返します。 –

関連する問題