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

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

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

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

Q&A

解決済

2回答

2135閲覧

rstip()  Python 役割

Surface-Yuki

総合スコア34

Python 3.x

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

0グッド

0クリップ

投稿2017/02/15 04:52

'''
line=input().rstrip().split(",")
print(line)
'''

上記のコマンドを実行して、
スライム,モンスター,ドラゴン
と入力すると、

['スライム', 'モンスター', 'ドラゴン']

という結果になります。

[質問点]
rstip()
は行末の改行を削除するという役割があるらしいのですが、いまいちその意味がわかりません。
実際、rstrip()を除いて実行しても同じ結果が表示されます。
どのようにデータ入力をした場合に違いが出るのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

rstrip()は文字列の空白を取り除く関数です。
試しにrstrip()をつけずに最後に空白を入れて入力すると、こんな感じになります。

python

1>>> line=input().split(",") 2スライム,モンスター,ドラゴン 3>>> print(line) 4['スライム', 'モンスター', 'ドラゴン ']

投稿2017/02/15 05:12

driller

総合スコア720

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

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

Surface-Yuki

2017/02/15 15:39

機能については理解しましたが、普通に入力する際にわざわざ文末に空白を加えることはないと思うのですが、 スライム,モンスター,ドラゴン の場合でも わざわざ標準入力で、最後に無駄な空白をが入力されることを想定する意味はあるのでしょうか?
driller

2017/02/15 23:51

元々の出題の由来がわからないため、これは想像でしかありませんが、 コピペとかでターミナルに貼り付けた文字列に行末に空白があっても、空白部分は可視化されていないため人間は認識することができません。 このようなヒューマンラーを防ぐ一環もあるのではないでしょうか。
Surface-Yuki

2017/02/16 00:27

なるほど、たしかにコピペなどをした場合に起きるミスを防げますね。 ありがとうございます。
guest

0

inputは末尾の改行を除いた結果を返すためです。
一方rstrip(引数なし)は末尾の(改行文字を含む)空白文字を除去します。
「a,b,c」と「a,b,c 」にてinput()input().rstrip()の結果の違いを確認してみてください。

投稿2017/02/15 05:09

編集2017/02/15 05:14
can110

総合スコア38233

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

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

Surface-Yuki

2017/02/15 06:09

末尾の改行文字とは何を指しているんですか?
can110

2017/02/15 06:13

inputで得られた入力結果の文字列です。
Surface-Yuki

2017/02/15 06:40

すみません。意味がわかりません。 改行文字を削除しないと、 ワードで入力すると出てくる改行マークのようなものが、 一文字にカウントされてしまうということでしょうか?
can110

2017/02/15 06:49

inputにてプロンプト上から文字を入力した場合、最後に改行文字を入力しますが、inputの戻り値には 最後の改行文字は含まれていない(input関数が勝手に取り除く)という意味です。 重ねて提案しますが、具体的な動作を確認してみてはいかがでしょうか? 理解が早いかと思います。 その場合、print( "[" + input() + "]")のように前後に「[」などの区切りをつけると空白や改行に気づきやすいです。
Surface-Yuki

2017/02/15 14:02

ありがとうございます。動作テストやってみました。 エンターキーは文字入力の終了を伝えて、コマンドを実行する役割だと理解していたので、文字情報の一つとしては数えていませんでした。 エンターキーを実行しないと入力画面が終了せず、コマンドが実行されないので、それも入力情報だと考えるのは少し不思議ですが、そのようになっているのですね。 出力でyukiと打つ場合は、 y+ u+ k+ i+ エンターキー が入力されているが、putコマンドの場合は戻り値のエンターキーは自動的に削除されると。 上記の理解で正しいですか? [以下の質問は無視して頂いても結構です。] では、逆にエンターキーを削除しない方法はあるのですか? これはナンセンスな質問かもしれまんせが、エンターキーを入力情報として認識させる方法はあるのでしょうか? その場合、yukiと打って実行をすると 結果は yuki#enter key(?)# ??
can110

2017/02/16 00:16

その理解でよいです。 エンターキーによって改行文字が入力されます。 input関数は、改行文字が入力されると入力動作を終了し、この改行文字を削除して呼出元に返します。 入力終端の改行文字をどうするかは、入力処理をおこなう関数の動作(仕様)によります。 たとえばC言語のgets関数などは、末尾改行を削除しません。呼出元が自力で削除する必要があります。 >では、逆にエンターキーを削除しない方法はあるのですか? ぜひpythonリファレンスなどを参照し探してみてください。他にある様々な関数の勉強にもなるので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問