2016-09-26 7 views
2

私はこのdictはウェブから掻き取りされているが、それはこのunicode問題が付属しています:regexを使用して、これらの文字を除去する最良の方法であるPython - デコードまたは正規表現?

{'track': [u'\u201cAnxiety\u201d', 
      u'\u201cLockjaw\u201d [ft. Kodak Black]', 
      u'\u201cMelanin Drop\u201d', 
      u'\u201cDreams\u201d', 
      u'\u201cIntern\u201d', 
      u'\u201cYou Don\u2019t Think You Like People Like Me\u201d', 
      u'\u201cFirst Day Out tha Feds\u201d', 
      u'\u201cFemale Vampire\u201d', 
      u'\u201cGirlfriend\u201d', 
      u'\u201cOpposite House\u201d', 
      u'\u201cGirls @\u201d [ft. Chance the Rapper]', 
      u'\u201cI Am a Nightmare\u201d']} 

、または一部decode方法がありますか?

どのようにですか?

+1

これらは左右の中括弧です。あなたは実際にあなたのデータから全ての中かっこ文字を取り除きたいですか? – user2357112

答えて

5

これらは引用符(「と」)です。文字列の最初または最後でそれらを取り除きたい場合は、stripにするのが最も簡単です。

>>> u'\u201cAnxiety\u201d'.strip(u'\u201c\u201d') 
u'Anxiety' 

あなたはどこにでも文字列でそれらを取り除くしたい場合は、replaceそれらは:(私の意見では)

ベター
>>> u'\u201cAnxiety\u201d'.replace(u'\u201c', '').replace(u'\u201d', '') 
u'Anxiety' 
+2

また、通常の引用符で置き換えることもできます: 'u' \ u201cAnxiety \ u201d'.replace(u '\ u201c'、 '"').replace(u '\ u201d'、 '"') – elethan

+0

@elethanはい興味深い考えです。 – zvone

0
dict['track'] = list(map(lambda x: x.replace('\u201c','').replace('\u201d',''), dict['track'])) 

読めるソリューション:

dict['track'] = [x.replace(u'\u201c', '').replace(u'\u201d', '') for x in dict['track']] 

クイック説明:a辞書の最初の唯一の値であるdict['track']は、strinのリストですgsでは、それぞれが不要ですu'\u201c'u'\u201d'です。 list comprehensionsをPythonで使用してそのリストを反復処理し、そのリスト内のすべての文字列に対してu'\u201c'u'\u201d'を空文字列''に置き換えると、それらは消えます。

辞書に複数の値がある場合、または'track'以外のキーがあり、このコードを少し一般的にして、すべてのキー名の辞書で機能させたい場合は、上記のコードをすべての辞書の値に適用してください:

for k,v in dict.items(): 
    dict[k] = [x.replace(u'\u201c', '').replace(u'\u201d', '') for x in v] 
+0

あなたの答えがどのように問題に対処するかの説明が役に立つでしょう。 – davidrpugh

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 –

+0

これでいいですね。 – galfisher