Python文字列エンコーディング - ファイル名

str(file.key)= '1011/101011/file_name'

newFileName = str(file.key)

しかし、コードを実行すると次のようになります。

UnicodeEncodeError: 'ascii'コーデックで文字をエンコードできない   x-y:序数が範囲外(128)

私はファイル名を解析し、s3サーバからダウンロードする必要があります。 'file_name'はどうすれば入手できますか?

5
最小限のテストケースを投稿してください。
追加された 著者 Michael Hoffman,
可能な限り短いスクリプトを作成しますが、このエラーは引き続き発生します。このスクリプトをこの質問に入れて、それを実行した完全な結果(トレースバックの1行だけでなく)を入れてください。これには2つの理由があります:(1)あなたが私たちがあなたを助けるために十分な情報を投稿することを保証します。 (2)この演習を頻繁に行うと、エラーがどこにあるのかがわかります。さらに、この質問にamazon-s3タグがありますが、書かれているようにAmazon S3とは関係がないようです。これは混乱しています。
追加された 著者 Michael Hoffman,
どういう意味ですか?
追加された 著者 Ron D.,
不足している情報を申し訳ありません。 @Koertは私の質問に答えました。問題は、Python 2.5からMac OSのコードをPython 2.5.2のLinuxサーバーにインポートしようとしていることです。私はnewFileNameの中で言葉を聞きたい。 file.keyは(バケットからの)s3キーです。しかし、私はKoertが私の問題を解決したと言いました。助けてくれてありがとう!
追加された 著者 Ron D.,
私たちは実際にfile.keyがどのようなものであるかを見たいと思っています(タイプ、それがどうなったか)。また、 newFileName で何をしたいのかを教えてくれません。これは提案された代替案と非常に関連しています。可能であれば、回答者が問題を見て調査するために何かを提供してください。
追加された 著者 Ondergetekende,
それは何を言っている:問題を示すコードの最小量を投稿してください。
追加された 著者 kindall,

1 答え

あなたはまともな答えを出すために少しでも文脈を変えて投稿しましたが、とにかく試してみます。

作成しようとしているファイル名にASCII以外の文字が含まれているように見えますが、これはPython 2.xでは自動的に標準のstrに変換できません。

str unicode に置き換えると、変換が一切不要になります。コードの他の部分でstrを使用する必要がある場合は、 newFileName = unicode(file.key).encode( 'ascii'、 'ignore')のようにエンコードすることができます。私の例では、変換できない文字は省略されることに注意してください。

2
追加された