ホームページ  >  記事  >  バックエンド開発  >  Python を使用してファイル内の文字、単語、スペース、行数を取得する

Python を使用してファイル内の文字、単語、スペース、行数を取得する

WBOY
WBOY転載
2023-09-02 12:33:151719ブラウズ

Python を使用してファイル内の文字、単語、スペース、行数を取得する

テキスト ファイルの分析は、さまざまなデータ処理および自然言語処理アプリケーションにおいて不可欠なタスクです。 Python は、このようなタスクを効率的に実行するための幅広い組み込み機能とライブラリを提供する、多用途で強力なプログラミング言語です。この記事では、Python を使用してテキスト ファイル内の文字、単語、スペース、行数をカウントする方法を説明します。

方法 1: ブルート フォース クラッキング方法

このアプローチでは、総当たり的な方法で独自のロジックを開発し、テキスト ファイルを入力として受け取り、ファイル内の文字、単語、スペース、行の数を数えます。このメソッドでは、組み込みメソッドは使用しません。

###アルゴリズム###

    open() 関数を使用して、ファイルを読み取りモードで開きます。
  • 文字、単語、スペース、行数を追跡するために変数を初期化します。
  • ループを使用してファイルを 1 行ずつ読み取ります。
  • 各行について、行数を増やします。
  • 行の長さ分だけ文字数を増やしてください。
  • 行を単語に分割するには、split() メソッドを使用します。
  • 単語数を行内の単語数だけ増やします。
  • 行の長さから単語数を 1 引いて、スペースの数を計算します。
  • ファイルを閉じます。
  • 結果を印刷します。
  • ###文法### リーリー
  • ここでの文字列は分割される文字列です。 delimiter (オプション) は、文字列を分割するために使用される区切り文字です。指定しない場合のデフォルトはスペースです。maxsplit (オプション) は実行する分割の最大数です。指定しない場合は、出現するすべての区切り文字が使用されます。
リーリー

ここでのシーケンスは、長さを調べたいシーケンス (文字列、リスト、タプルなど) です。

###例###

以下の例では、

analyze_text_file()

関数はパラメータとしてファイル パスを受け取ります。関数内では、open() 関数を使用してコンテキスト (with ステートメント) を使用して読み取りモードでファイル マネージャーを開き、処理後にファイルが適切に閉じられるようにします。 4 つの変数 (char_count、word_count、space_count、line_count) は、それぞれのカウントを追跡するために 0 に初期化されます。ファイル内の各行をループします。行ごとに、行数が増加します。行の長さが文字数に加算されます。空白文字の位置で行を分割する、split() メソッドを使用して行を単語に分割します。行内の単語数を単語数に追加します。スペースは単語数より 1 つ少ないため、スペース数は行内の単語数から 1 を減算して計算されます。すべての行が処理された後、ファイルはコンテキスト マネージャーによって自動的に閉じられます。最後に、文字、単語、スペース、行数を示す結果が表示されます。

リーリー ###出力### リーリー

方法 2: 組み込みメソッドを使用する

この方法では、いくつかの組み込み関数とオペレーティング システム モジュールを使用して、ファイル内の文字、単語、スペース、行の数をカウントできます。 ###アルゴリズム###

ファイル パスをパラメーターとして受け取る、analyze_text_file(file_path) という名前の関数を定義します。

関数内で、try-Exception ブロックを使用して、FileNotFoundError の可能性を処理します。

    try ブロック内で、open() 関数を使用して、読み取りモードで file_path を使用してファイルを開きます。
  • コンテキスト マネージャー (ステートメントとともに) を使用して、適切なファイル処理を確保し、ファイルを自動的に閉じます。
  • read() メソッドを使用して、ファイルの内容全体を読み取り、content という名前の変数に格納します。
  • コンテンツ文字列に対して len() 関数を使用して文字数を計算し、それを char_count に割り当てます。
  • split() メソッドを使用してコンテンツ文字列を空白文字で分割し、結果のリストに対して len() 関数を使用して、単語数をカウントします。結果を word_count に代入します。
  • コンテンツ文字列内のスペースの数をカウントするには、パラメーター " " を指定して count() メソッドを使用します。結果を space_count に代入します。
  • コンテンツ文字列内の改行の数をカウントするには、パラメータ「\n」を指定して count() メソッドを使用します。結果を line_count に代入します。
  • 文字数、単語数、スペース数、行数を表示して分析概要を印刷します。
  • Exception ブロックで FileNotFoundError をキャッチし、「ファイルが見つかりません!」というメッセージを出力します。
  • 関数を終了します。
  • 関数の外側で、分析するファイルへのパスを含む file_path 変数を定義します。
  • analyze_text_file(file_path) 関数を呼び出し、file_path をパラメータとして渡します。
  • ###例###
  • 以下の例では、
  • analyze_text_file()

    関数はパラメータとしてファイル パスを受け取ります。関数内では、open() 関数を使用して、コンテキスト マネージャーを使用して読み取りモードでファイルを開きます。

    在文件对象上调用 read() 方法,将文件的全部内容读取到名为 content 的字符串变量中。使用内置函数和方法:len(content) 计算通过确定内容的长度来计算字符数 string.len(content.split()) 通过在空白字符处拆分内容字符串并计算结果列表的 length.content 来计算字数。 count(' ') 使用 count() 方法计算内容字符串中空格的数量。content.count('\n') 计算内容中换行符的数量字符串,对应行数。打印结果,显示字符数、字数、空格数和行数。

    def analyze_text_file(file_path):
        try:
            with open(file_path, 'r') as file:
                content = file.read()
    
                char_count = len(content)
                word_count = len(content.split())
                space_count = content.count(' ')
                line_count = content.count('\n')
    
                print("File analysis summary:")
                print("Character count:", char_count)
                print("Word count:", word_count)
                print("Space count:", space_count)
                print("Line count:", line_count)
    
        except FileNotFoundError:
            print("File not found!")
    
    # Usage
    file_path = "sample.txt"  # Replace with your file path
    analyze_text_file(file_path)
    

    输出

    File not found!
    

    结论

    在本文中,我们讨论了如何使用 Python 强力方法以及内置方法来计算文件中的单词数、空格数和行数。通过利用这些内置函数和方法,您可以实现相同的任务以简洁有效的方式分析文本文件。请记住将 file_path 变量中的“sample.txt”替换为您所需的文本文件的路径。本文中描述的两种方法都提供了使用 Python 分析和提取文本文件信息的有效方法,使您可以执行进一步的数据处理和分析基于获得的计数。

以上がPython を使用してファイル内の文字、単語、スペース、行数を取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。