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

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

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

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

Python

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

Q&A

解決済

1回答

519閲覧

Pythonの文字列検索について

AbcdefgFirst

総合スコア33

Python 3.x

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

Python

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

0グッド

1クリップ

投稿2020/09/01 02:54

お世話になっております。

解決したい事

下記のような辞書のリストをループして文字列が「熱」の場合、一括で違うテキストに変更したいのですが
テキストが「熱」のみで無いとtrueが出力されません。

Python

1data = [{'出力される': '熱', 2 'header2': 'koweksfo 熱 ddw', 3 'header3': 'ポリウレタン、熱'}, 4 {'header': 'poqt,awfawfge 熱', 5 'header2': '熱 fefqf kdwawf', 6 '判定しなくていいもの': '日本 温泉 熱海'}] 7 8for d in data: 9 if '熱' in d.values(): 10 print('true') 11

このコードだとどこが間違っているのでしょうか。。
熱海のように熱がくっ付いたものについては判定はしたく無いです。

お力添えのほどよろしくお願い致します。

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

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

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

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

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

sfdust

2020/09/01 05:40 編集

「熱海のように熱がくっ付いたものについては判定はしたく無い」 ということですが、判定して良いものは「koweksfo 熱 ddw」「x 熱 z」 のように、1語で独立している「熱」が含まれているもの(読点「、」または半角スペースもしくは全角スペースで囲まれているもの)という理解でいいでしょうか
aokikenichi

2020/09/01 03:18

テキストが「熱」のみで無いとtrueが出力されません。 熱海のように熱がくっ付いたものについては判定はしたく無いです。 真逆のことを仰っているようですが、ご要望はどちらでしょうか。 また、現状も「熱海」はfalseとなっています。 「poqt,awfawfge 熱」はtrueにしたのでしょうかfalseにしたいのでしょうか。
AbcdefgFirst

2020/09/01 05:25

質問頂きありがとうございます。 説明が分かり辛くすみません。 元データの要素については区切りがスペースであったり 、であったりバラバラですが 置換したいものはsfdust様の通り、要素自体が「熱」そのもの、または1語で独立している「熱」が含まれているものになります。 熱海については熱が付いていますが独立していないため置換対象外としたいです。 よろしくお願い致します。
sfdust

2020/09/01 05:41 編集

熱の直後に(がついているもの「例:熱(海)」は、1語で独立しているもの(判定対象外)に該当しますか?
AbcdefgFirst

2020/09/01 05:54

熱(海)は検索対象に該当しません。 よろしくお願いします。
sfdust

2020/09/01 06:06

ありがとうございます。 アンダーバーによる区切りが区切りと判定されない点を除けば、Daregadaさんの回答で仕様を満たしていると思われます。 (_熱_海 は除外されます)
AbcdefgFirst

2020/09/01 11:47

ありがとうございます。 再度トライしてみます!
guest

回答1

0

ベストアンサー

単語としての「熱」が含まれているかという条件だと仮定して、正規表現の\b熱\bを使うコード。

Python

1import re 2 3data = [{'出力される': '熱', 4 'header2': 'koweksfo 熱 ddw', 5 'header3': 'ポリウレタン、熱'}, 6 {'header': 'poqt,awfawfge 熱', 7 'header2': '熱 fefqf kdwawf', 8 '判定しなくていいもの': '日本 温泉 熱海'}] 9 10for d in data: 11 for key in d: 12 print(key, d[key], sep=': ', end=' -> ') 13 if re.search(r'\b熱\b', d[key]): 14 print('true') 15 else: 16 print('false')

result

1出力される: 熱 -> true 2header2: koweksfo 熱 ddw -> true 3header3: ポリウレタン、熱 -> true 4header: poqt,awfawfge 熱 -> true 5header2: 熱 fefqf kdwawf -> true 6判定しなくていいもの: 日本 温泉 熱海 -> false

投稿2020/09/01 03:47

Daregada

総合スコア11990

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

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

AbcdefgFirst

2020/09/01 11:46

Daregada様 ご回答ありがとうございます。 頂いたコードで書き直してみます。 よろしくお願いします。
AbcdefgFirst

2020/09/09 02:28

ご連絡遅れましてすみません。 上記のコードで解決できました。 ご教示下さいまして、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問