9

以下のようなユニコード文字を含む文字列がある場合は、それを印刷して、エスケープされていないバージョンを取得できます。

>>> s = "äåö"
>>> s
'\xc3\xa4\xc3\xa5\xc3\xb6'
>>> print s
äåö

しかし、上記の文字列を含むリストがあり、それを印刷すると:

>>> s = ['äåö']
>>> s
['\xc3\xa4\xc3\xa5\xc3\xb6']
>>> print s
['\xc3\xa4\xc3\xa5\xc3\xb6']

エスケープされた文字シーケンスが引き続き取得されます。リストのコンテンツをエスケープしないようにするにはどうすればよいですか? このような:

>>> print s
['äåö']

また、文字列がunicode型の場合、上記と同じことをどのように行うのですか?

>>> s = u'åäö'
>>> s
u'\xe5\xe4\xf6'
>>> print s
åäö
>>> s = [u'åäö']
>>> s
[u'\xe5\xe4\xf6']
>>> print s
[u'\xe5\xe4\xf6']
4

5 に答える 5

9

文字列を出力する__str__と、オブジェクトのメソッドの出力が得られます。この場合は、引用符なしの文字列です。リストの__str__メソッドは異なり、開始と終了を含む文字列と、含まれる各オブジェクト[]のメソッドによって生成される文字列を作成します。__repr__あなたが見ているのは と の違い__str__です__repr__

代わりに独自の文字列を作成できます。

print '[' + ','.join("'" + str(x) + "'" for x in s) + ']'

このバージョンは、Python 2 の Unicode とバイト文字列の両方で動作するはずです。

print u'[' + u','.join(u"'" + unicode(x) + u"'" for x in s) + u']'
于 2013-05-28T18:50:20.960 に答える
8

これで満足ですか?

>>> s = ['äåö', 'äå']
>>> print "\n".join(s)
äåö
äå
>>> print ", ".join(s)
äåö, äå


>>> s = [u'åäö']
>>> print ",".join(s)
åäö
于 2013-05-28T18:24:21.307 に答える