ホームページ  >  記事  >  バックエンド開発  >  Python の入力関数で改行が挿入されないようにするにはどうすればよいですか?

Python の入力関数で改行が挿入されないようにするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 15:50:30859ブラウズ

How to Prevent Newline Insertion in Python's Input Functions?

入力関数での改行挿入を回避する方法

Python で input 関数を使用する際、自動的に行が追加されないようにしたいことがよくあります。ユーザー入力後の改行。これにより、特定のシナリオでよりシームレスなフローが可能になります。

これを実現するために、多くの Python ユーザーは、末尾のカンマを使用して print ステートメント内の改行文字を抑制する方法に慣れています。ただし、Python 2.x の raw_input や Python 3.x の input などの入力関数を扱う場合、同じテクニックは適用されません。

問題の理解

raw_input (または input) を使用する場合、ユーザーの入力の後に改行文字 (「n」で表されます) が常に追加されます。これは、次の例のように、プロンプトを入力と同じ行に続ける必要がある状況では問題になる可能性があります。

print "Hello, "
name = raw_input()
print ", how do you do?"

Result:

Hello, Tomas
, how do you do?

望ましい結果:

Hello, Tomas, how do you do?

制限の克服

方法 1: カスタム アプローチの使用

Ferdinand Beyer 氏が述べたように、raw_input または input から改行文字を直接削除することは基本的に不可能です。ただし、カスタマイズされたアプローチを伴う回避策があります。

端末制御シーケンス ' 33[{}C 33[1A'.format(len(x) y) を活用することにより、x はユーザーの長さです。 input で、y が raw_input 文字列の長さである場合、入力が入力される直前の行にカーソルを戻すことができます。

方法 2: 入力関数の代替

あるいは、改行の問題が発生せずにユーザー入力を収集する他の方法もあります。そのような方法の 1 つは、getpass モジュールを使用することです。

import getpass

name = getpass.getpass("Hello, ")
print ", how do you do?"

この方法では、末尾の改行なしでプロンプトが表示され、余分な改行を避けて入力を直接返します。ただし、入力のエコーも無効になります。これはすべての状況に適しているわけではありません。

結論として、端末制御シーケンスやカスタム アプローチを使用することで、raw_input または input による改行の追加を防ぐことはできません。 getpass のような代替入力メソッドを検討すると、特定の要件に合わせたソリューションを提供できます。

以上がPython の入力関数で改行が挿入されないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。