web-dev-qa-db-ja.com

Python文字列のuプレフィックスは何ですか?

のように:

u'Hello'

私の推測では、「Unicode」を示していると思いますが、正しいですか?

もしそうなら、いつから利用できるのですか?

185
OscarRyz

そうです、.1.3。Unicode文字列を参照してください。

これはPython 2.0以降の構文です。

デフォルトの文字列タイプはUnicodeであるため、Python 3はそれらを冗長にしました。バージョン3.0から3.2はそれらを削除しましたが、2から3への移行を支援するPython 2との互換性のために .3+で再追加 でした。

103
Stefan Kendall

u'Some String'のuは、文字列がUnicode文字列であることを意味します。

Q:私はひどく、ひどく急いでいるので、Google検索からここに着きました。私はこのデータをファイルに書き込もうとしていますが、エラーが発生しています、そして今度は最も単純で、おそらく欠陥のある、最も簡単な解決策が必要です。

A:ジョエルのnicodeと文字セットについて絶対に、積極的に知っておくべき絶対的な最小値(言い訳はありません!)文字セットに関するエッセイ。

Q:タイムコードpls

罰金。 str('Some String')または'Some String'.encode('ascii', 'ignore')を試してください。しかし、あなたは本当に nicode文字列の変換this の文字エンコーディングの入門書と議論のいくつかを読むべきです。

110
Andrew

私の推測では、「Unicode」を示していると思いますが、正しいですか?

はい。

もしそうなら、いつから利用できるのですか?

Python2.x。

Python 3.xでは、文字列はデフォルトでUnicodeを使用するため、uプレフィックスは不要です。 注: Python 3.0-3.2では、uは構文エラーです。 Python 3.3+では、2/3互換のアプリを簡単に作成できるようにすることも合法です。

50
kennytm

ユニコードです。

str()の間に変数を置くだけで、問題なく動作します。

ただし、次のような2つのリストがある場合:

a = ['co32','co36']
b = [u'co32',u'co36']

set(a)==set(b)をチェックするとFalseになりますが、次のようにすると:

b = str(b)
set(a)==set(b)

これで、結果はTrueになります。

2
user3251882

以下が役立つはずです。

http://docs.python.org/library/functions.html#unicode

http://www.amk.ca/python/howto/unicode (Unicodeの原則に既に精通している場合は、「PythonのUnicodeサポート」にスキップしてください)

2
Brian Luft

人間向けの文字列はすべてu ""を使用する必要があります。

Python文字列を処理する場合、次の考え方が非常に役立つことがわかりました。All Pythonマニフェスト文字列はu""構文を使用する必要があります。 ""構文は、バイト配列専用です。

バッシングが始まる前に、説明させてください。ほとんどのPythonプログラムは、文字列に""を使用することから始めます。しかし、その後、彼らはインターネットからドキュメントをサポートする必要があるので、"".decodeの使用を開始し、突然、あれこれのデコードについて例外が発生します。これはすべて、""を文字列に使用するためです。この場合、Unicodeはウイルスのように振る舞い、大混乱を引き起こします。

ただし、私のルールに従えば、この感染はありません(すでに感染しているため)。

2
Frank Krueger

requestsの出力にfunny-char-syndromeがあったため、ここに来ました。 response.textで適切にデコードされた文字列が得られると思いましたが、出力ではドイツ語のウムラウトがあったはずの面白い二重文字が見つかりました。

response.encodingは何とか空だったため、応答はコンテンツを適切にデコードする方法を知らず、単にASCIIとして処理しました(推測)。

私の解決策は、「response.content」で生のバイトを取得し、手動でdecode('utf_8')を適用することでした。結果はschöneUmlaute。

正しくデコードされた

毛皮

vs.不適切にデコードされた

より

1
Chris