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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

994閲覧

Python 正規表現でのエラー

pokenon2000

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/01/02 13:59

編集2022/01/02 15:20

前提・実現したいこと

ファイルを開いて発音が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]))

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

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

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

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

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

melian

2022/01/02 14:24

c.txt の中身が判らないので何とも言えませんが、 phonemes = columns[1:] としているので、phonemes はリストになります。そのため、re.search でエラーになっています。
wagashi_157

2022/01/02 14:24

コードは ```Python (コード) ``` のようにMarkdown記法を上手く使いましょう。 質問入力画面にMarkdown記法が載っているので参考にしてみると良いと思います。
pokenon2000

2022/01/02 14:50

markdown記法習ったんですけどいまいち理解出来なくて…重要なようなので勉強して次回以降上手く使えるようにしておきます
melian

2022/01/02 14:56

なるほど、phonemes = columns[-1] で十分な様な気もします(1文字の照合なので)。
pokenon2000

2022/01/02 14:56

melianさん回答ありがとうございます c.txtの中身について追記しました たしかにリストだとエラー出るのは当然ですね…改善します
pokenon2000

2022/01/02 15:08

melianさんありがとうございます 効率的なコードがかけるようにします wsbさん回答ありがとうございます []で囲まれたものだけがリストだと思ってました…
kazuma-s

2022/01/02 16:44

質問で、「Python」と「コード」が四角い枠の中に入っていますよね。 その「コード」という文字を、 「# -*- coding: utf-8 -*-」から「 print(word + '\t' + str(freq[word]))] までの コードに置き換えてください。 次回でなく、今回の質問を修正してください。
y_waiwai

2022/01/02 23:42

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答1

0

自己解決

lineをそのまま検索したらできました

投稿2022/01/04 13:01

pokenon2000

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問