파이썬 : json.loads는 'u'로 시작하는 항목을 반환합니다.
Obj-C 형식의 JSON 인코딩 문자열을 수신 할 예정이며 아래 코드와 같이 더미 문자열 (현재)을 디코딩하고 있습니다. 내 출력에는 각 항목 앞에 문자 'u'가 있습니다.
[{u'i': u'imap.gmail.com', u'p': u'aaaa'}, {u'i': u'333imap.com', u'p': u'bbbb'}...
JSON은이 유니 코드 문자를 어떻게 추가합니까? 그것을 제거하는 가장 좋은 방법은 무엇입니까?
mail_accounts = []
da = {}
try:
s = '[{"i":"imap.gmail.com","p":"aaaa"},{"i":"imap.aol.com","p":"bbbb"},{"i":"333imap.com","p":"ccccc"},{"i":"444ap.gmail.com","p":"ddddd"},{"i":"555imap.gmail.com","p":"eee"}]'
jdata = json.loads(s)
for d in jdata:
for key, value in d.iteritems():
if key not in da:
da[key] = value
else:
da = {}
da[key] = value
mail_accounts.append(da)
except Exception, err:
sys.stderr.write('Exception Error: %s' % str(err))
print mail_accounts
u- 접두사는 단지 유니 코드 문자열이 있음을 의미합니다. 실제로 문자열을 사용하면 데이터에 표시되지 않습니다. 인쇄 된 출력물에 버리지 마십시오.
예를 들어 다음을 시도하십시오.
print mail_accounts[0]["i"]
당신은 u를 볼 수 없습니다.
모든 것이 멋지다. 'u'는 좋은 것입니다. 파이썬 2.x에서 문자열이 유니 코드 유형임을 나타냅니다.
http://docs.python.org/2/howto/unicode.html#the-unicode-type
d3
아래 의 인쇄는 당신이 찾고있는 것입니다 (덤프와로드의 조합입니다) :)
갖는 :
import json
d = """{"Aa": 1, "BB": "blabla", "cc": "False"}"""
d1 = json.loads(d) # Produces a dictionary out of the given string
d2 = json.dumps(d) # Produces a string out of a given dict or string
d3 = json.dumps(json.loads(d)) # 'dumps' gets the dict from 'loads' this time
print "d1: " + str(d1)
print "d2: " + d2
print "d3: " + d3
인쇄물:
d1: {u'Aa': 1, u'cc': u'False', u'BB': u'blabla'}
d2: "{\"Aa\": 1, \"BB\": \"blabla\", \"cc\": \"False\"}"
d3: {"Aa": 1, "cc": "False", "BB": "blabla"}
유니 코드는 여기에 적합한 유형입니다. JSONDecoder 문서는 변환 테이블을 설명하고 JSON 문자열 오브젝트가 유니 코드 오브젝트로 디코딩됨을 나타냅니다.
https://docs.python.org/2/library/json.html#encoders-and-decoders
JSON Python
==================================
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None
"인코딩은이 인스턴스에서 디코딩 된 str 객체를 해석하는 데 사용되는 인코딩을 결정합니다 (기본적으로 UTF-8)."
u
프리픽스 수단 해당 문자열 유니보다는 8 비트 스트링임을. u
접두사를 표시하지 않는 가장 좋은 방법 은 문자열이 기본적으로 유니 코드 인 Python 3으로 전환하는 것입니다. 옵션이 아닌 경우 str
생성자는 유니 코드에서 8 비트로 변환되므로 결과를 반복적으로 반복하고로 변환 unicode
하면 str
됩니다. 그러나 문자열을 유니 코드로 그대로 두는 것이 가장 좋습니다.
Those 'u' characters being appended to an object signifies that the object is encoded in "unicode".
If you want to remove those 'u' chars from your object you can do this:
import json, ast
jdata = ast.literal_eval(json.dumps(jdata)) # Removing uni-code chars
Let's checkout from python shell
>>> import json, ast
>>> jdata = [{u'i': u'imap.gmail.com', u'p': u'aaaa'}, {u'i': u'333imap.com', u'p': u'bbbb'}]
>>> jdata = ast.literal_eval(json.dumps(jdata))
>>> jdata
[{'i': 'imap.gmail.com', 'p': 'aaaa'}, {'i': '333imap.com', 'p': 'bbbb'}]
I kept running into this problem when trying to capture JSON data in the log with the Python logging
library, for debugging and troubleshooting purposes. Getting the u
character is a real nuisance when you want to copy the text and paste it into your code somewhere.
As everyone will tell you, this is because it is a Unicode representation, and it could come from the fact that you’ve used json.loads()
to load in the data from a string in the first place.
If you want the JSON representation in the log, without the u
prefix, the trick is to use json.dumps()
before logging it out. For example:
import json
import logging
# Prepare the data
json_data = json.loads('{"key": "value"}')
# Log normally and get the Unicode indicator
logging.warning('data: {}'.format(json_data))
>>> WARNING:root:data: {u'key': u'value'}
# Dump to a string before logging and get clean output!
logging.warning('data: {}'.format(json.dumps(json_data)))
>>> WARNING:root:data: {'key': 'value'}
참고URL : https://stackoverflow.com/questions/13940272/python-json-loads-returns-items-prefixing-with-u
'IT story' 카테고리의 다른 글
CSV / XLS를 JSON으로 변환 하시겠습니까? (0) | 2020.06.22 |
---|---|
AVFoundation AVPlayer로 비디오를 루핑 하시겠습니까? (0) | 2020.06.22 |
XML에서 RecyclerView app : layoutManager =“”를 설정하는 방법은 무엇입니까? (0) | 2020.06.22 |
mongodb에서 .bson 파일 형식을 가져 오는 방법 (0) | 2020.06.21 |
입력 필드에 필요한 jQuery 추가 (0) | 2020.06.21 |