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

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

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

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

Q&A

解決済

3回答

776閲覧

pythonの文字抽出について

takadaimiku

総合スコア76

Python

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

0グッド

0クリップ

投稿2022/08/23 02:53

python

1a='TEST=12345'

という文字列があるとき、
TEST=の後にある数字を取得する方法を教えてください。

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

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

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

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

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

melian

2022/08/23 03:11

a.split('=')[1]
takadaimiku

2022/08/23 04:50

TEST=の後にある数字を取得する、というコードを知りたいです。 もしかしたら変なところに=が入る可能性もあるのです。
melian

2022/08/23 04:52

その場合は a.split('TEST=')[1] で。
takadaimiku

2022/08/23 04:55

a='TEST=12345aaa' の場合12345aaaとなります。 TEST=の後にある数字を取得する、というコードを知りたいです。
melian

2022/08/23 04:58

「a='TEST=12345' という文字があるとき」という条件のはずなので、質問文を編集してください。
takadaimiku

2022/08/23 05:06

変なところに=が入る可能性もあると先ほど述べましたよね。 その時点で、 'TEST=12345'は'固定ではなく、'TEST=12345='や'TEST=12345aaa'にもなりえる。と伝わりませんかね? 何度も「TEST=の後にある数字を取得する、というコードを知りたいです。」と言っているように TEST=は固定でそのあとに数字がくるのも固定だから「TEST=の後にある数字を取得する、というコードを知りたい」という意図理解していただけませんか?
melian

2022/08/23 05:07

なので、それを質問文に追記して下さい。
can110

2022/08/23 05:18

>変なところに=が入る可能性もあると先ほど述べましたよね。 たとえば「TEST==12345」の取得結果はどうなりますか? またなぜそうなるのかといった仕様(ルール)を第三者が誤解なく理解できるように記載することは可能でしょうか?
takadaimiku

2022/08/23 05:22

TEST=は固定,そのあとに数字が入るのも固定、と言っているのに TEST==12345云々かぁ、、、、 そのあと=直後ではないという解釈か。 とりあえず急ぎで、解決はしたので失礼します。
quickquip

2022/08/23 05:28 編集

なんかこの欄が延びてたんですね。全然見えてなかったです。ここでどんなにやりとりしててもすでに回答した人に通知が来るわけではないんです。「質問を編集してください」とさんざん言われてるのはそのためです。 > 変なところに=が入る可能性もあるのです と > TEST=は固定,そのあとに数字が入るのも固定 が矛盾してるからみんな混乱したんですよ。
can110

2022/08/23 05:29

> TEST=は固定,そのあとに数字が入るのも固定 どこに書いていますか? また、「変なところに=が入る可能性もある」という 「変」なルールが突電出てきたので尋ねたまでです。
takadaimiku

2022/08/23 05:32

ちょっと前のコメントで言ってます ★★★で囲んでます。 変なルールは言いそびれてました。すいません。 変なところに=が入る可能性もあると先ほど述べましたよね。 その時点で、 'TEST=12345'は'固定ではなく、'TEST=12345='や'TEST=12345aaa'にもなりえる。と伝わりませんかね? 何度も「TEST=の後にある数字を取得する、というコードを知りたいです。」と言っているように ★★★TEST=は固定でそのあとに数字がくるのも固定だから★★★「TEST=の後にある数字を取得する、というコードを知りたい」という意図理解していただけませんか?
can110

2022/08/23 05:36

はい。単純にその「意図」とやらが不明確で伝わらないから尋ねていました。 おそらくこれ以上やりとりしても私には理解できないのでこれで終わりにします。
guest

回答3

0

a[5:]

追記

特に凝ったりせず

python

1if a.startswith('TEST='): 2 value = a[5:] # 5 は 'TEST='の長さ

とかは普通に書きます。

投稿2022/08/23 03:08

編集2022/08/23 05:06
quickquip

総合スコア11059

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

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

takadaimiku

2022/08/23 04:53

TEST=の後にある数字を取得する、というコードを知りたいです。 いろいろと文字は変わる可能性があるのですがTEST=〇〇という部分だけはかわらない前提です。
quickquip

2022/08/23 05:01

TEST= が固定なら(もしくは事前チェックされているなら)回答の通りで何も問題ないはずですが。
quickquip

2022/08/23 05:07

> いろいろと文字は変わる可能性があるのですがTEST=〇〇という部分だけはかわらない は意味が変わりません。 入力例と、欲しい値をもっとたくさん実例として質問に書いた方がよいかと。(私は質問されたことに答えてますよ)
takadaimiku

2022/08/23 05:13

'TEST=12345aaa' 'aaaTEST=12345' という様に中に余計な文字が混じることはあるが、TEST=数字という形式は変わらない。 ので、TEST=の後の数字を取得する方法を聞いていたのです。
quickquip

2022/08/23 05:16 編集

質問を編集してください。 例えば TEST=123aaTEST=456 の時は? みたいな疑問もでますね。
takadaimiku

2022/08/23 05:17 編集

まちがえてベストアンサーしてもうた、、、、、、、
quickquip

2022/08/23 05:20 編集

伝わってないですけれど想像するに 'TEST=12345aaa' のケースは'12345' (かそのintのオブジェクト?) が欲しいのですよね。 こういったケースだと、うまくプログラミングできない原因は「仕様を日本語で書けない」ことに由来することが多いです。 その状態で質問してもうまくいかないので、仕様を日本語で書けない場合は入力例と欲しい値をたくさん書く方がまだ伝わりますよ。
quickquip

2022/08/23 05:21 編集

ベストアンサーの解除はできたはず……? (リニューアルで出来なくなった??)
takadaimiku

2022/08/23 05:25

ベストアンサーの解除できました。(本人にいうのもあれですが) すみません、ちょっと時間がなくて雑に急いで書いた結果いろんな解釈があって混乱させてしまいました。 こちらの質問の意図どおりの回答はstartさんのものです。 お時間お取りしてすみませんでした。
quickquip

2022/08/23 05:29

それはかまいませんが質問は編集した方がいいですよ。
guest

0

ベストアンサー

※ マッチする文字列がない場合はエラーになります。

python

1>>> import re 2>>> re.findall(r'TEST=(\d+)', 'TEST=12345')[0] 3'12345' 4>>> re.findall(r'TEST=(\d+)', 'TEST=12345=')[0] 5'12345' 6>>> re.findall(r'TEST=(\d+)', 'TEST=12345aaa')[0] 7'12345' 8>>> re.findall(r'TEST=(\d+)', 'TEST=abc')[0] 9Traceback (most recent call last): 10 File "<stdin>", line 1, in <module> 11IndexError: list index out of range

投稿2022/08/23 05:20

melian

総合スコア19865

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

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

takadaimiku

2022/08/23 05:52

おおお!!!! すごいシンプルかつ、こちらの意図も理解した完璧な回答です!!!!! ありがとうございます!!!
guest

0

Python

1import re 2a='TEST=12345' 3tmp = re.match("TEST=[0-9]+",a).group() 4#TEST=12345 5re.sub(r"\D", "", tmp) 6#12345

投稿2022/08/23 03:46

編集2022/08/23 05:00
start

総合スコア101

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

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

LouiS0616

2022/08/23 04:15

re.find_all("TEST=[0-9]+",a) だと 12345 は返さないと思いますよ。
takadaimiku

2022/08/23 04:52

実行してみた結果12345は返されませんでした。
start

2022/08/23 04:53

修正しました。申し訳ないです
takadaimiku

2022/08/23 04:58

import re a='TEST=12345' test=re.match("TEST=[0-9]+",a).group() print(test) で実行してみましたが、取得結果 TEST=12345でした。
start

2022/08/23 04:59

再度修正しました。これで可能だと思われます
takadaimiku

2022/08/23 05:16

ありがとうございます。確認できました。 TEST=数字のマッチした文字を抽出して、その中から数字以外を消すというやり方ですね。 「TEST=の後にある数字を取得する方法を教えてください。」というこちらの意図を汲み取って回答してくださった唯一の方でした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問