programing

파이썬 사전: u' chars 제거

goodsources 2023. 5. 6. 14:56
반응형

파이썬 사전: u' chars 제거

다음 사전에서 ucar를 제거하려면 어떻게 해야 합니까?

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

이 데이터의 출처는Mongo Database find() 쿼리

처럼 보이도록

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

Sqlite3와 같은 일부 데이터베이스에서는 변환기 및 어댑터 기능을 정의하여 유니코드가 아닌 문자열로 검색할 수 있습니다.안타깝게도 MongoDB는 str, decimal 또는 datetime과 같은 일반적으로 필요한 유형에 대해 이 옵션을 제공하지 않습니다.

Mongo 옵션을 제거했기 때문에 데이터를 검색한 후 변환하기 위해 Python 코드를 작성해야 합니다.결과를 가로질러 각 필드를 변환하는 재귀 함수를 작성할 수 있습니다.

빠르고 더러운 대안으로, 유용할 수 있는 작은 해킹이 있습니다.

>>> import json, ast
>>> r = {u'name': u'A', u'primary_key': 1}
>>> ast.literal_eval(json.dumps(r))
{'name': 'A', 'primary_key': 1}

u현재 표시되는 문자는 단순히 유니코드 문자열임을 의미합니다.

유니코드로 사용하지 않으려면 ASCII와 같은 다른 형식으로 인코딩할 수 있습니다.

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

>>> s2 = s.encode('ascii')
>>> s2
'hi'

단순히 딕트를 json 데이터 문자열로 변환하려는 경우 다음을 수행할 수 있습니다.

>>> from bson.json_util import dumps
>>> data = {u'name': u'A', u'primary_key': 1}
>>> dumps(data)
'{"name": "A", "primary_key": 1}'

당신은 psycopg2가 당신의 문자열을 인코딩하도록 할 필요가 있고, 당신의 쿼리에 Python-syntax 문자열을 raw로 삽입하려고 하지 말아야 합니다. 만약 일부 문자열에 SQL이 문자열을 끝내는 것으로 해석할 문자가 포함되어 있다면 당신은 SQL 주입 문제의 위험에 처하게 될 것입니다.다음과 같이 psycopg2에 매개 변수를 전달해야 합니다.

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

psycopg2는 SQL 구문을 매우 매우 잘 알기 때문에, 그것은 중단될 것입니다.u문자 그대로의 당신의 것.name그리고.town문자열과 따옴표를 사용하여 이 SQL 문에 필요한 방식으로 이스케이프할 수 있습니다.

그의 논평에서 7이 언급했듯이,u는 mongodb로 표시되는 형식을 나타냅니다(Json이 유니코드를 사용하도록 정의되었기 때문일 수 있습니다).

이 사실은 당신에게 완전히 투명해야 합니다, 사실 당신은 사용할 수 있습니다.str그리고.unicode딕트에서 값을 서로 바꿀 수 없습니다.

>>> 'foo' in {u'foo': 5}
True
>>> {u'foo': 5}['foo']
5
>>> 

문자열이 유니코드에 있다는 것을 나타내는 문자열에서 u를 단순히 제거할 수는 없습니다.

한 가지 해결책은 인코딩 기능을 사용하는 것입니다.

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')

그러면 ASCII가 아닌 문자가 무시됩니다.

이미 게시된 내용과 유사하지만 json 라이브러리를 사용합니다.

>>> import json
>>> udata = {u'name': u'A', u'primary_key': 1}
>>> json.dumps(udata)
'{"name": "A", "primary_key": 1}'

언급URL : https://stackoverflow.com/questions/8101649/python-dictionary-removing-u-chars

반응형