2

私は現在 Python を学んでおり、この言語を試すためのプログラムを書きました。ただし、使用するたびに、出力のどこかに常に「u」という文字が含まれます。IDE として Pyscripter を使用しています。

これは私のコードです:

print "whats your name"
age = raw_input()
print "Alright, so %r, I just realized what percent-r does actually or is meant for" % (age)
print "What next ur age",
age1 = raw_input()
print "you entered %r " % (age1)

実行すると、次のように表示されます。

>>> Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32.

>>> whats your name (i typed kk)

>>> Alright, so u'kk', i just realized what percent-r does actually or is meant for

>>> what next ur age (i typed ll)

>>> you entered u'll' 

必要な文字列だけでなく、出力内にランダムなu文字があるのはなぜですか?

4

1 に答える 1

6

問題は、文字列補間にあります。

コードでは、次のようなものを使用します。

print "Your name is %r" % name

代わりに、次のいずれかを使用します。

print "Your name is %s" % name

name...これにより、Python は手動で文字列として扱うか、次を使用します。

print "Your name is {0}".format(name)

...これはより新しく、より好ましい方法であり、使用するのが面倒ではありません。


これが何が起こっているかの内訳です。を使用するraw_input()と、Python はUnicode 文字列と呼ばれる特別な種類の文字列を返します。Unicode 文字列は、中国語の文字など、通常の文字列では表現できないあらゆる種類の文字を表現できるという点で特別です。通常の文字列は通常、キーボードに表示される文字のみを使用できます。

現在、Python 2.x では、次のようにして、文字列が Unicode であることを示すことができます。

my_str = u"汉字/漢字"

文字列の先頭に「u」が付いていることに注意してください。

補間インジケーターを使用する場合、%rPython に文字列を取得reprし、変数で使用して、それを元の文字列に置き換えるように指示しています。もしそうならrepr(my_str)、それは戻りu"汉字/漢字"ます。

対照的に、を使用する%sと、Python はstr変数で使用します。すると、(一種の)str(my_str)返されます。"汉字/漢字"

Unicode は、特に Python では理解するのが難しい場合があります。興味のある方は、このプレゼンテーションで Unicode とは何か、Python でどのように使用されるかについて詳しく説明します。

于 2013-09-28T07:14:47.383 に答える