0

最終的なコードで実行したいのは、'names.txt' という名前のテキスト ドキュメント内の名前の文字列を読み取ることです。次に、そのファイルに含まれる名前の数を計算し、名前の数を表示するようにプログラムに指示します。これまでのコードは、数値の合計をテキスト ファイルに表示するためのものでしたが、今必要なプログラムに十分近いので、文字列/名前の量を収集するためにコードを作り直すことができると思います。合計の代わりにそれを表示します。

これまでのコードは次のとおりです。

def main():
    #initialize an accumulator.
    total = 0.0

    try:
        # Open the file.
        myfile = open('names.txt', 'r')

        # Read and display the file's contents.
        for line in myfile:
            amount = float(line)
            total += amount

        # Close the file.
        myfile.close()

    except IOError:
        print('An error occured trying to read the file.')

    except ValueError:
        print('Non-numeric data found in the file.')

    except:
        print('An error occured.')

# Call the main function.
main()

私はまだPythonプログラミングに本当に慣れていないので、あまり厳しくしないでください。誰かがこれを作り直して、数字の合計ではなく数字/名前の量を表示する方法を理解できる場合。大変ありがたく存じます。このプログラムをやり直すことができない場合は、喜んで新しい解決策に落ち着きます。

編集:これは、「names.txt」がどのように見えるかの例です:

ジョン

メアリー

ポール

アン

4

5 に答える 5

0

名前が空白を使用して分割されていると仮定します。

def main():
    #initialize an accumulator.
    total = 0.0

    try:
        # Open the file.
        myfile = open('names.txt', 'r')

        # Read and display the file's contents.
        for line in myfile:
            words = line.split()
            total += len(words)

        # Close the file.
        myfile.close()

    except IOError:
        print('An error occured trying to read the file.')

    except ValueError:
        print('Non-numeric data found in the file.')

    except:
        print('An error occured.')

# Call the main function.
main()
于 2012-07-18T17:01:14.250 に答える
0

ファイルの行数を数えたいだけの場合

# Open the file.
myfile = open('names.txt', 'r')

#Count the lines in the file
totalLines = len(myfile.readlines()):

# Close the file.
myfile.close()
于 2012-07-18T17:02:05.827 に答える
0
fh = open("file","r")
print "%d lines"%len(fh.readlines())
fh.close()

またはあなたがすることができます

 fh=open("file","r")
 print "%d words"%len(fh.read().split())
 fh.close()

これらはすべて、すぐに利用できる情報であり、努力すれば見つけるのは難しくありません...答えを得るだけで、通常、クラスがばかげてしまいます...

于 2012-07-18T16:58:12.957 に答える
0

テキストファイルの名前が行で区切られていることを考慮してください。

myfile = open('names.txt', 'r')
lstLines = myfile.read().split('\n')

dict((name,lstLines.count(name)) for name in lstLines)

これにより、出現回数を持つ各名前の辞書が作成されます。

リスト内の「name1」などの特定の名前の出現を検索するには

lstLines.count('name1')
于 2012-07-18T17:00:26.500 に答える
-1

ステートメントを使用withしてファイルを開きます。例外が発生した場合でも、ファイルを適切に閉じます。ファイルモードは省略できます。デフォルトです。

各名前がそれぞれの行にあり、重複がない場合:

with open('names.txt') as f:
    number_of_nonblank_lines = sum(1 for line in f if line.strip())
name_count = number_of_nonblank_lines

タスクは非常に簡単です。問題コードの未使用/無効の蓄積を避けるために、新しいコードから始めます。

ファイル内の行数を数えることだけが必要な場合 (コマンドなど)、次のメソッドwc -lを使用できます。.count('\n')

#!/usr/bin/env python
import sys
from functools import partial

read_chunk = partial(sys.stdin.read, 1 << 15) # or any text file instead of stdin
print(sum(chunk.count('\n') for chunk in iter(read_chunk, '')))

Python よりも C++ で stdin からの行の読み取りが非常に遅いのはなぜですか?も参照してください。

于 2012-07-18T17:05:27.357 に答える