4

私の関数は、変数 x に割り当てられ、リストに追加されるタプルを返します。

x = (u'string1', u'string2', u'string3', u'string4')
resultsList.append(x)

関数は複数回呼び出され、最終的なリストは 20 個のタプルで構成されます。

タプル内の文字列は Unicode であり、utf-8 に変換したいと考えています。

一部の文字列には、ö、ä などの非 ASCII 文字も含まれています。

それらをすべてワンステップで変換する方法はありますか?

4

1 に答える 1

10

ネストされたリスト内包表記を使用します。

encoded = [[s.encode('utf8') for s in t] for t in resultsList]

これにより、UTF-8 でエンコードされたデータのバイト文字列を含むリストのリストが生成されます。

これらのリストを印刷すると、Python が Python バイト文字列の内容を Python リテラル文字列として表していることがわかります。引用符と、エスケープ シーケンスで表される印刷可能な ASCII コードポイントではないバイトを使用します。

>>> l = ['Kaiserstra\xc3\x9fe']
>>> l
['Kaiserstra\xc3\x9fe']
>>> l[0]
'Kaiserstra\xc3\x9fe'
>>> print l[0]
Kaiserstraße

Python はデバッグ目的でこのデータを提示するため、これは正常です。\xc3およびエスケープ シーケンスは\x9f、小さな ringel-es 文字をエンコードするために使用される 2 つの UTF-8 バイト C39F (16 進数) を表します。

于 2013-07-08T12:50:14.090 に答える