質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

4999閲覧

テキストファイルを読み込んで,文字が何個あるかカウントしたいです

S.Abe

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/04/29 04:22

実現したいこと

test.txtというテキストファイルを読み込み,「>char:002」というような形で標準入力をします.この入力した文字列から,次の「>char:003」の文字列が現れるまでに「あ」から「お」がそれぞれ何個ずつあるか数えて
「あ:○ い:○ う:○ え:○ お:○ 」
のように出力するのが目標です.

現在の状況

現在はtxtファイル全体での「あ」から「お」が何個あるかカウントするところまではできているのですが,ここからどのようなアルゴリズムを組めば良いか悩んでいます.

あと,できればですが正規表現を用いたカウントの仕方も知りたいです.

用いた環境

・Mac OS Mojave
・Python3

自分で書いたソースコード

#coding:utf-8 import re f = open('desktop/test.txt', 'r')#ファイル読み込み str = f.read()#開いたファイル全体を文字列として取得 print(str.count('あ')) print(str.count('い')) print(str.count('う')) print(str.count('え')) print(str.count('お')) f.close()

以下はtest.txtの中身です.

>char:001 あいうえお >char:002 あいうえお あいうえお >char:003 あいうえお あいうえお あいうえお >char:004 あいうえお あいうえお あいうえお あいうえお >char:005 あいうえお あいうえお あいうえお あいうえお あいうえお

以上,よろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

とりあえず、> で始まる行でテキストdataを分割してみます。

Python

1blocks = re.split('^>.+$', data, flags=re.MULTILINE)

残る課題は少ないです。

  • 各ブロックに対して、どのようにカウント処理を実行するか?
  • ブロックの先頭と末尾に余計な空白文字が付く。どうやって取り除くか?
  • 空のブロックが抽出される場合がある。どうやって取り除くか?

ご自身で考え、試してみて下さい。

あと,できればですが正規表現を用いたカウントの仕方も知りたいです.

そのタスクは正規表現には不向きです。


ご提示のコードで気になった部分についても書きます。

  • f = open(...

一般にwith文を使った方が良いです。調べてみましょう。

  • **str = **

文字列にstrという名前を付けるのはご法度です。不可解なエラーの原因になります。

Python

1>>> str(42) 2'42' 3>>> 4>>> str = 'spam' 5>>> 6>>> str(42) 7Traceback (most recent call last): 8 File "<stdin>", line 1, in <module> 9TypeError: 'str' object is not callable

他にも付けてはいけない名前は、int, sum, max, id, len などがあります。

投稿2019/04/29 04:48

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

S.Abe

2019/04/29 04:54

現時点での問題点や考えるべきアルゴリズム,非常に参考になりました.ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問