web-dev-qa-db-ja.com

python-変数にUnicodeリテラルを追加する方法は?

私はこのようないくつかの例を見てきました:

for name in os.listdir(u'somedir') :

私の問題は、somedirを変数として取得していることです。それでは、どうすれば「u」リテラルを追加できますか?

何かのようなもの

for name in ops.listdir(u+somedir)

16
user1251654

somedirのソースがUnicode文字列として提供しない場合(isinstance(somedir, unicode)がFalse)、適切な文字エンコードを提供してデコードする必要があります(バイトの出所によって異なります) )::

unicode_somedir = somedir.decode(encoding)
5
jfs

生のバイト文字列が与えられた場合、それをデコードすることにより、それをunicodeオブジェクト(Python 2.x)またはstrオブジェクト(Python 3.x)に変換できます。

for name in ops.listdir(somedir.decode("utf-8")):

"utf-8"の代わりに、バイト文字列がエンコードされているエンコードを使用します。エンコーディングを省略すると、Pythonの標準エンコーディングが使用されます(2.xではascii、3.xではutf-8)。

詳細については、 nicode HOWTO.x )を参照してください。

7
Sven Marnach

unicode(somedir)

例えば組み込み関数を使用する

4
David Lam

簡単な解決策は、次のようにUnicode関数を使用することです。

x = unicode( '1.2.3.4')

xを印刷

u'1.2.3.4 '

type(x)

「unicode」と入力します

タイプがUnicodeとして表示されるようになりました。

1
Azher Rana