Python辞書:u '文字を削除する

次の辞書から u 文字を削除するにはどうすればよいですか?

{u'name': u'A', u'primary_key': 1}  

このデータは Mongo Databasefind()クエリから取得されています

それはように見えるように

{'name': 'A', 'primary_key': 1}
34
私はpsycopg2を使用してステートメントを実行すると失敗します。これが理由であると想定していますProgramError: 'または付近の構文エラー' '' '"INSERT INTO p_dimension(id、name)VALUES(1、E \' Acro Energy \ ')" (1、E \ 'Acr ... \ n ^ \ n')\ n "
追加された 著者 daydreamer,
追加された 著者 daydreamer,
文字は、文字列がUnicode文字列であることを示します。あなたはそれらを "削除"したいと思う何らかの理由がありますか?
追加された 著者 Sven Marnach,
これはpsycopg2の問題と非常によく似ていますが、mongodbではなく、エラーがどこにあるのかを考えます。あなたが本当に解決しようとしている問題の完全な例を投稿する
追加された 著者 SingleNegationElimination,
@daydreamerおそらく失敗している実際のコードを投稿するべきです。
追加された 著者 Amber,

6 答え

あなたが見ている u 文字は、単にそれらがユニコード文字列であることを意味します。

それらをUnicodeにしたくない場合は、それらをASCIIなどの別のものとしてエンコードすることができます。

>>> s = u'hi!'
>>> s
u'hi'

>>> s2 = s.encode('ascii')
>>> s2
'hi'
17
追加された

dictをjsonデータ文字列に変換したい場合は、次のようにします。

>>> from bson.json_util import dumps
>>> data = {u'name': u'A', u'primary_key': 1}
>>> dumps(data)
'{"name": "A", "primary_key": 1}'
3
追加された

psycopg2に文字列をエンコードさせる必要があります。Python構文の文字列をそのままクエリに挿入するのではなく、文字列の一部にSQLが文字列を終了すると解釈する文字が含まれていると、SQLインジェクションの問題が発生します。 psycopg2にパラメータを渡す必要があります:

cursor.execute('INSERT INTO person (name, town) VALUES (%s %s)', (name, town))

psycopg2はSQL構文を非常によく知っているので、 nametown の文字列と引用符とエスケープを取得すると u このSQLステートメントが必要としている方法とまったく同じです。

3
追加された

彼のコメントでsvenが言及しているように、 u はmongodbで表現されている型を示しています(実際はjsonがUnicodeを使用するために定義されています)。

この事実はあなたには完全に透過的でなければなりません。実際には、 strunicode の値は同じ意味で使用できます。

>>> 'foo' in {u'foo': 5}
True
>>> {u'foo': 5}['foo']
5
>>> 
2
追加された

文字列がUnicodeであることを象徴的に表す文字列から単に削除することはできません。

1つの解決策は、encode関数を使用することです。

old_strings = {u'name':u'A', u'primary_key':1}
newstrings = {}
for k in old_strings.keys():
    newtsrings[k] = old_strings[k].encode('ascii','ignore')

これは、非アスキー文字を無視するだけです。

0
追加された