파이썬 사전: u' chars 제거
다음 사전에서 ucar를 제거하려면 어떻게 해야 합니까?
{u'name': u'A', u'primary_key': 1}
이 데이터의 출처는Mongo Database
find() 쿼리
처럼 보이도록
{'name': 'A', 'primary_key': 1}
Sqlite3와 같은 일부 데이터베이스에서는 변환기 및 어댑터 기능을 정의하여 유니코드가 아닌 문자열로 검색할 수 있습니다.안타깝게도 MongoDB는 str, decimal 또는 datetime과 같은 일반적으로 필요한 유형에 대해 이 옵션을 제공하지 않습니다.
- http://api.mongodb.org/python/current/tutorial.html#a-note-on-unicode-strings
- http://api.mongodb.org/python/current/faq.html#how-can-i-store-decimal-decimal-instances
- http://api.mongodb.org/python/current/faq.html#how-can-i-save-a-datetime-date-instance
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
'programing' 카테고리의 다른 글
어떻게 만들까요?시스템 트레이에서만 실행되는 NET Windows Forms 응용 프로그램? (0) | 2023.05.06 |
---|---|
mongoose를 사용하여 mongodb에서 컬렉션의 만료 시간 설정 (0) | 2023.05.06 |
WPF의 확인란 왼쪽에 있는 텍스트? (0) | 2023.05.06 |
스크립트 테스트를 위한 PowerShell의 에코 기능 (0) | 2023.05.06 |
Angular-cli에서 모듈을 생성하는 동안 라우팅 모듈 생성 (0) | 2023.05.06 |