0

"SSE-Künden, SSE-Händler.pdf"私は、このファイル名をPythonインタープリターで印刷しているときに、これら2つの名前を持つファイルを持っていますunicode char ( ü,ä) 。Unicode値は、それぞれのASCII値に変換されていると思います'SSE-K\x81nden, SSE-H\x84ndler.pdf'が、したいです

テスト ディレクトリには、「SSE-Künden, SSE-Händler.pdf」という名前の pdf ファイルが含まれています。

私はこれを試しました: path = 'C:\test' for a,b,c in os.walk(path): print c

['SSE-K\x81nden, SSE-H\x84ndler.pdf']

この ascii char をそれぞれの unicode val に変換するにはどうすればよいですか。元の name( "SSE-Künden, SSE-Händler.pdf") をインタプリタに表示し、ファイルにそのまま書き込みます。これを実現するにはどうすればよいですか。Python 2.6 と Windows OS を使用しています。

ありがとう。

4

3 に答える 3

3

端末が文字の表示をサポートしていると仮定すると、ファイルのリストを反復処理して個別に出力します (または、Unicode をリストに表示する Python 3 を使用します)。

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> for p,d,f in os.walk(u'.'):
...  for n in f:
...   print n
...
SSE-Künden, SSE-Händler.pdf

また、パスに Unicode 文字列 (u'.') を使用したことにも注意してください。os.walkこれは、バイト文字列ではなく Unicode 文字列を返すように指示します。非 ASCII ファイル名を扱う場合、これは良い考えです。

Python 3 では、文字列はデフォルトで Unicode であり、非 ASCII 文字はエスケープ コードとして表示される代わりにユーザーに表示されます。

Python 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> for p,d,f in os.walk('.'):
...  print(f)
...
['SSE-Künden, SSE-Händler.pdf']
于 2011-09-22T06:54:39.690 に答える
1
for a,b,c in os.walk(path):
    for n in c:
        print n.decode('utf-8')
于 2011-09-22T06:58:20.297 に答える
0

ファイルへの書き込み: http://docs.python.org/howto/unicode.html#reading-and-writing-unicode-data

于 2011-09-22T06:54:50.283 に答える