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

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

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

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

Q&A

受付中

python初心者です。

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

3回答

0グッド

0クリップ

545閲覧

投稿2023/03/22 12:31

python超初心者です。

x = ('apple', '10 g banana, 5 g peach, 20 g orange')
y = 'banana'
もし'banana'がxに含まれていたら'banana'の前の10 gを
(10.0, 'g')
という形で表示したいのですが可能ですか?
tupleではremoveが使えないのでlistに変える方向で進めていたんですが...

for x in x:
if y in x:
x = list(x)

確認のためにこの段階でprint(x)をしてみたら
['1', '0', ' ', 'g', ' ', 'b', 'a', 'n', 'a', 'n', 'a', ',', ' ', '5', ' ', 'g', ' ', 'p', 'e', 'a', 'c', 'h', ',', ' ', '2', '0', ' ', 'g', ' ', 'o', 'r', 'a', 'n', 'g', 'e']
1つずつ取り出される上に'apple'がどこか彼方へ...

お助けくださいorz

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

TakaiY

2023/03/22 14:19

いくつか回答ついちゃってますが、 x = ('apple', '10 g banana, 5 g peach, 20 g orange') このxのデータは本当にこの形のデータなのですか? このタプルは、1つめが果物の名前1つで、2つめに、カンマで区切った「5 g peach」のようなデータがあるということでしょうか? また、取り出す条件が1つめのくだものだった場合、何を表示しますか?

回答3

0

インデントが無くなってしまいましたので連続して書きます。

python

1import re 2 3x = ('apple', '10 g banana, 5 g peach, 20 g orange') 4y = 'banana' 5 6for item in x: 7 if y in item: 8 match = re.search(r'(\d+(\.\d+)?\s*g)\s*' + y, item) 9 if match: 10 weight = match.group(1) 11 weight_split = tuple(weight.split()) 12 print(weight_split) 13 break

投稿2023/03/22 13:13

編集2023/03/22 13:14
quiz

総合スコア230

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

「ChatGPT(GPT-4)]により生成された文章です」

この場合、正規表現を使って簡単に解決できます。reモジュールを使って、目的の文字列を検索し、その前の単位を取得できます。

以下のコードを試してみてください:
import re

x = ('apple', '10 g banana, 5 g peach, 20 g orange')
y = 'banana'

for item in x:
if y in item:
match = re.search(r'(\d+(.\d+)?\sg)\s' + y, item)
if match:
weight = match.group(1)
weight_split = tuple(weight.split())
print(weight_split)
break

このコードは、xの各要素を検索して、y('banana')が含まれているかどうかを確認します。含まれている場合、正規表現を使って、バナナの前の数値と単位を取得し、それをタプルに変換して表示します。

投稿2023/03/22 13:12

quiz

総合スコア230

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

だいぶ場当たり的なコードですが、要件がわからないのでこの程度しか私には書けません。

python

1x = ('apple', '10 g banana, 5 g peach, 20 g orange') 2y = 'banana' 3 4for phrase in x: 5 if y in phrase: 6 lst = [] 7 for word in phrase.replace(',', ' ').split(): 8 if (word == y): 9 break 10 else: 11 if (word.isdigit()): 12 lst.append(float(word)) 13 else: 14 lst.append(word) 15 print(tuple(lst))

投稿2023/03/22 12:55

bboydaisuke

総合スコア5102

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.83%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python

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