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

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

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

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

Q&A

解決済

1回答

184閲覧

文字列、findメソッドに関して

TenSuke0513

総合スコア14

Python 3.x

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

0グッド

0クリップ

投稿2017/10/23 06:35

###文字列から特定の文字を指定して番号を得たい

区切られていない文字列から特定の文字を指定し番号をえたい tag=<Apple> words_line=Coffee<Apple>SushiBananaOrange num=words_line.find(tag) print(num) 出力結果 2 と出したいです

###試したこと
リストに代入して、index()の使用を試みたのですが、うまくリスト内で文字列をわけられませんでした

###補足情報(言語/FW/ツール等のバージョンなど)
python3

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

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

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

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

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

guest

回答1

0

ベストアンサー

文字列は''もしくは""で囲みましょう。

python

1tag = '<Apple>' 2words_line = 'Coffee<Apple>SushiBananaOrange' 3num = words_line.find(tag) 4print(num) 5 6実行結果 76

追記1
何故2と出力したいのでしょうか?何を想定しているのかが分かりません。

追記2
['Coffee','Apple','Sushi','Banana','Orange']
このように分割して2番目だから2ということでしょうか?
これをfindで実現することはできません。まず機械が文章中の単語を認識できません。
文字列中の単語が必ず大文字から始まる前提ならば以下のように実装できます。

python

1tag = 'Apple' 2words_line = 'CoffeeAppleSushiBananaOrange' 3lst,s = [],"" 4for c in words_line: 5 if 65 <= ord(c) <= 90: 6 if s != "": 7 lst.append(s) 8 s = c 9 else: 10 s += c 11 else: 12 s += c 13num = lst.index(tag) 14print(num) 15

投稿2017/10/23 06:57

編集2017/10/23 07:09
_Victorique__

総合スコア1392

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

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

TenSuke0513

2017/10/23 07:03

ご回答ありがとうございます!tagとword_lineはinput()入力で得るので"をスクリプト内で入れることができません。情報不足で申し訳ないです。
_Victorique__

2017/10/23 07:09

回答を追記しましたのでご確認ください。
TenSuke0513

2017/10/23 07:23

追記1に関して、2と出力したいのは課題で文字列をある文字で区切りそれ以降の文字列を出力するように言われ、<Apple>を2とできれば文字列をスライスしてそれ以降の文字列を出力すれば良いと考えました。 追記の回答ありがとうがざいます!
_Victorique__

2017/10/23 07:46

そうでしたら最初のコードでindexがわかるのでprint(words_line[num:])でOKです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問