2011-12-03 8 views
2

私は奇妙なことにコンパイルするFacebookからの情報を削っています。私はリストにそれを印刷したり、それをコミットしようとするとユニコードが再ユニコードされています

Trentem\u00f8ller

print u'%s' % nameまたはprint unicode(name)それはエスケープシーケンスバックスラッシュ:ページのソースは、Unicode文字を持つ通常の文字列として名「Trentemøller」を返します。

u'Trentem\\u00f8ller'

['foo', 'bar', u'Trentem\u00f8ller']

この文字列を扱うための適切な方法は何ですか?理想的には、それをu''のリストに保存しますが、バックスラッシュは追加しません。あなたがUnicode文字列を形成する制御にしている場合は

+0

あなたがコピーして何かを貼り付け、またはあなたがコードを書いているしていますか?あなたのコードや端末が見えないので、何が起きているのかわかりません。私はFacebookからデータをどのように削っているかもわかりません。 –

+0

機械翻訳のブラウザモジュールでソースを文字列として取得しています。その後、ソースがとても奇妙なので、私はBeautifulSoupが機能しないので、find()文ですばやく切り捨てます。これは私が知る限り、いつものASCII文字列として扱われます。 –

+0

お待ちください... HTMLから適切なものを抽出していますか、言い換えれば、HTMLに埋め込まれたJSONやJavascriptを探していますか? –

答えて

4

は、その後、一つだけバックスラッシュを使用します。

>>> print u'Trentem\u00f8ller' 
Trentemøller 

通常の文字列がすでに画面scaperによって形成されている場合は、あなたがする必要があります再評価文字列はbackslash escape sequencesを実際のユニコード文字に変換します。 eval組み込みは魅力的だろうが、代わりにast.literal_evalを使用する方が安全です:

>>> import ast 
>>> s = 'Trentem\u00f8ller'     # a regular string 
>>> print ast.literal_eval('u"""' + s + '"""') 
Trentemøller 
+1

私は、正しくコンパイルされた別の場所から名前を引き上げることになりましたが、これは素晴らしい情報です。どうもありがとう。 –

関連する問題