私はこのようないくつかの例を見てきました:
for name in os.listdir(u'somedir') :
私の問題は、somedirを変数として取得していることです。それでは、どうすれば「u」リテラルを追加できますか?
何かのようなもの
for name in ops.listdir(u+somedir)
?
somedir
のソースがUnicode文字列として提供しない場合(isinstance(somedir, unicode)
がFalse)、適切な文字エンコードを提供してデコードする必要があります(バイトの出所によって異なります) )::
unicode_somedir = somedir.decode(encoding)
生のバイト文字列が与えられた場合、それをデコードすることにより、それを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 )を参照してください。
unicode(somedir)
例えば組み込み関数を使用する
簡単な解決策は、次のようにUnicode関数を使用することです。
x = unicode( '1.2.3.4')
xを印刷
u'1.2.3.4 '
type(x)
「unicode」と入力します
タイプがUnicodeとして表示されるようになりました。