前提・実現したいこと
ファイルを開いて発音がzで終わる単語を正規表現で抜き出してプリントするというプログラムを作りたいのですがresult= re.search(r'z$', phonemes) の部分でexpected string or bytes-like objectというエラーが出ます
phonemesがリストのためエラーが出ると教えてもらったのでresult= re.search(r'z$', phonemes) のphenomesの部分をcolumnsに変更したところ同様のエラーが出ました
→columnsもリストだと教えていただき正規表現の後に何を入れればいいか分からなくなりました
発音部分と同様の検索対象を置くにはどうすればよいか教えてください
python
1 2コード 3```# -*- coding: utf-8 -*- 4 5datafile = open('c.txt') 6for line in datafile: 7 line = line.rstrip() 8 9 # コメント行を飛ばす 10 if line.startswith(';;;'): 11 continue 12 13 columns = line.split() 14 15 word = columns[0] 16 phonemes = columns[1:] 17 18 import re 19 freq = {} 20 21 result= re.search(r'z$', phonemes) 22 23 if result: 24 word = result.group(1) 25 if word in freq: 26 freq[word] += 1 27 else: 28 freq[word] = 1 29 30# ディクショナリの中身を表示 31for word in freq: 32 print(word + '\t' + str(freq[word]))
c.txt の中身が判らないので何とも言えませんが、
phonemes = columns[1:]
としているので、phonemes はリストになります。そのため、re.search でエラーになっています。
コードは
```Python
(コード)
```
のようにMarkdown記法を上手く使いましょう。
質問入力画面にMarkdown記法が載っているので参考にしてみると良いと思います。
markdown記法習ったんですけどいまいち理解出来なくて…重要なようなので勉強して次回以降上手く使えるようにしておきます
なるほど、phonemes = columns[-1] で十分な様な気もします(1文字の照合なので)。
melianさん回答ありがとうございます
c.txtの中身について追記しました
たしかにリストだとエラー出るのは当然ですね…改善します
columnsもリストです。リストがわからない場合はPythonチュートリアルの第3章を参照してください。
https://docs.python.org/ja/3/tutorial/introduction.html#
melianさんありがとうございます
効率的なコードがかけるようにします
wsbさん回答ありがとうございます
[]で囲まれたものだけがリストだと思ってました…
質問で、「Python」と「コード」が四角い枠の中に入っていますよね。
その「コード」という文字を、
「# -*- coding: utf-8 -*-」から「 print(word + '\t' + str(freq[word]))] までの
コードに置き換えてください。
次回でなく、今回の質問を修正してください。
このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
回答1件
あなたの回答
tips
プレビュー