Hướng dẫn python convert unicode to json - python chuyển đổi unicode sang json

Tôi đã nhận được JSON sau:

import yaml
import json
json_data = yaml.load(json.dumps(request.json()))
4 bằng cách thực hiện
import yaml
import json
json_data = yaml.load(json.dumps(request.json()))
5 trong mã Python của tôi. Bây giờ, tôi muốn chuyển đổi JSON Unicode thành JSON bình thường, một cái gì đó nên thích điều này:
import yaml
import json
json_data = yaml.load(json.dumps(request.json()))
6. Làm thế nào để tôi hoàn thành việc này, mà không cần phải thực hiện bất kỳ thay thế thủ công? Xin vui lòng giúp đỡ.

Hỏi ngày 30 tháng 4 năm 2016 lúc 11:46Apr 30, 2016 at 11:46

Hướng dẫn python convert unicode to json - python chuyển đổi unicode sang json

3

{u'a ': u'avalue', u'b ': u'bvalue', u'c ': u'cvalue'} là một từ điển mà bạn đang gọi là unicode json. Bây giờ, bằng ngôn ngữ của bạn nếu bạn muốn một JSON thông thường từ đây thì chỉ cần làm điều gì đó như sau:

x={u'a': u'aValue', u'b': u'bValue', u'c': u'cValue'}
y=json.dumps(x)
print y

Đầu ra sẽ là {"A": "Avalue", "C": "Cvalue", "B": "Bvalue"}

Đã trả lời ngày 30 tháng 4 năm 2016 lúc 12:17Apr 30, 2016 at 12:17

2

Cho Python 2.x

import yaml
import json
json_data = yaml.load(json.dumps(request.json()))

Bây giờ JSON_DATA này có thể được sử dụng làm JSON và cũng có thể có danh sách JSON.

Đã trả lời ngày 15 tháng 11 năm 2017 lúc 6:24Nov 15, 2017 at 6:24

1

Bạn có thể sử dụng danh sách hiểu để mã hóa tất cả các khóa và giá trị như ASCII như thế này:

dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])

Lưu ý: Nhìn chung không có nhiều lợi ích khi không có dữ liệu của bạn trong Unicode, vì vậy trừ khi bạn có một lý do cụ thể để không có nó trong Unicode, thì tôi sẽ để nó.

Đã trả lời ngày 30 tháng 4 năm 2016 lúc 11:49Apr 30, 2016 at 11:49

NatecatnatecatNatecat

2.1571 Huy hiệu vàng17 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge17 silver badges20 bronze badges

Một thư viện có sẵn trong PYPI có thể hữu ích, xem: Unidecode.

Nó được dự định để chuyển đổi các nhân vật châu Âu bằng các điều khoản (điểm nhấn) thành các ký tự ASCII cơ sở của họ, nhưng nó cũng giống như khi ký tự Unicode đã nằm trong phạm vi ASCII.

from unicode import unidecode

def fUnUn(sOrU):
    return unidecode(sOrU).encode('ascii') if type(sOrU) is unicode else sOrU

sASCII = fUnUn(u'ASCII')

Hướng dẫn python convert unicode to json - python chuyển đổi unicode sang json

Subtleseeker

3.5673 huy hiệu vàng24 Huy hiệu bạc38 Huy hiệu đồng3 gold badges24 silver badges38 bronze badges

Đã trả lời ngày 25 tháng 2 năm 2020 lúc 15:06Feb 25, 2020 at 15:06

Trang chủ »Python» JSON »Python mã hóa các ký tự Unicode và không phải ASCII được vào JSONPython » JSON » Python Encode Unicode and non-ASCII characters as-is into JSON

Trong bài viết này, chúng tôi sẽ giải quyết các câu hỏi thường gặp sau đây về việc làm việc với dữ liệu Unicode JSON trong Python.

  • Cách tuần tự hóa dữ liệu unicode hoặc không ASCII thành các chuỗi JSON as-IS thay vì trình tự thoát
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    7 (ví dụ, lưu trữ chuỗi Unicode
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    8 as-IS thay vì
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    9 trong JSON)
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    8 as-is instead of
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    9 in JSON
    )
  • Mã hóa dữ liệu Unicode ở định dạng
    dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
    
    0.
  • Cách tuần tự hóa tất cả các ký tự không phải ASCII đã thoát ra (ví dụ, lưu trữ chuỗi Unicode
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    8 là
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    9 trong JSON)string
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    8 as
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    9 in JSON
    )

Python RFC 7159 & NBSP; yêu cầu JSON phải được biểu diễn bằng UTF-8, UTF-16 hoặc UTF-32, với UTF-8 là mặc định được khuyến nghị cho khả năng tương tác tối đa.Python RFC 7159 requires that JSON be represented using either UTF-8, UTF-16, or UTF-32, with UTF-8 being the recommended default for maximum interoperability.

Tham số đảm bảo_ascii & nbsp;

Sử dụng mô-đun tích hợp Python, JSON cung cấp json.dump () và json.dumps () & nbsp; phương thức để mã hóa các đối tượng Python thành dữ liệu JSON.

dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
3 và
dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
4 có tham số ____ 25 & nbsp; & Nbsp; ________ 25 là thực tế bởi sự thật để đầu ra được đảm bảo có tất cả các ký tự không phải là ASCII đã thoát ra. Nếu
dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
7, các ký tự này sẽ được xuất ra.

Mô -đun JSON luôn tạo ra các đối tượng

dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
8. Bạn nhận được một chuỗi trở lại, không phải là một chuỗi unicode. Bởi vì việc trốn thoát được JSON cho phép.
dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
8
objects. You get a string back, not a Unicode string. Because the escaping is allowed by JSON.

  • Sử dụng
    dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
    
    9, chúng ta có thể trình bày một cách an toàn để thể hiện các ký tự Unicode. Bằng cách đặt nó thành True, chúng tôi đảm bảo JSON kết quả là các ký tự ASCII hợp lệ (ngay cả khi chúng có Unicode bên trong).
  • Sử dụng
    dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
    
    7, chúng tôi đảm bảo rằng các ký tự Unicode lưu trữ JSON AS-IS thay vì trình tự thoát
    import yaml
    import json
    json_data = yaml.load(json.dumps(request.json()))
    
    7.

Lưu dữ liệu không phải ASCII hoặc unicode không phải là trình tự thoát trong json

Trong ví dụ này, chúng tôi sẽ cố gắng mã hóa dữ liệu Unicode thành JSON. Giải pháp này rất hữu ích khi bạn muốn đổ các ký tự Unicode làm ký tự thay vì trình tự thoát.

Đặt

dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
7 trong
dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
4 để mã hóa unicode as-is thành json

import json

unicodeData= {
    "string1": "明彦",
    "string2": u"\u00f8"
}
print("unicode Data is ", unicodeData)

encodedUnicode = json.dumps(unicodeData, ensure_ascii=False) # use dump() method to write it in file
print("JSON character encoding by setting ensure_ascii=False", encodedUnicode)

print("Decoding JSON", json.loads(encodedUnicode))

Output::

unicode Data is  {'string1': '明彦', 'string2': 'ø'}
JSON character encoding by setting ensure_ascii=False {"string1": "明彦", "string2": "ø"}
Decoding JSON {'string1': '明彦', 'string2': 'ø'}

Lưu ý: Ví dụ này rất hữu ích để lưu trữ chuỗi unicode AS-IS trong JSON.: This example is useful to store the Unicode string as-is in JSON.

JSON tuần tự hóa dữ liệu Unicode và ghi nó vào một tệp.

Trong ví dụ trên, chúng tôi đã thấy cách lưu dữ liệu không phải ASCII hoặc Unicode không phải là chuỗi thoát trong JSON. Bây giờ, hãy để Lừa xem cách viết JSON Dữ liệu unicode được nối tiếp vào một tệp.

import json

sampleDict= {
    "string1": "明彦",
    "string2": u"\u00f8"
}
with open("unicodeFile.json", "w", encoding='utf-8') as write_file:
    json.dump(sampleDict, write_file, ensure_ascii=False)
print("Done writing JSON serialized Unicode Data as-is into file")

with open("unicodeFile.json", "r", encoding='utf-8') as read_file:
    print("Reading JSON serialized Unicode data from file")
    sampleData = json.load(read_file)
print("Decoded JSON serialized Unicode data")
print(sampleData["string1"], sampleData["string1"])

Output::

Done writing JSON serialized Unicode Data as-is into file
Reading JSON serialized Unicode data from file
Decoded JSON serialized Unicode data
明彦 明彦

Hướng dẫn python convert unicode to json - python chuyển đổi unicode sang json
Tệp JSON sau khi ghi dữ liệu unicode is-is

Tuần tự hóa các đối tượng unicode thành chuỗi UTF-8 JSON thay vì trình tự thoát

Bạn cũng có thể đặt mã hóa JSON thành UTF-8. UTF-8 là mặc định được đề xuất cho khả năng tương tác tối đa. Đặt

dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
7 thành và mã hóa dữ liệu Unicode thành JSON bằng cách sử dụng ‘UTF-8.UTF-8‘.

import json

# encoding in UTF-8
unicodeData= {
    "string1": "明彦",
    "string2": u"\u00f8"
}
print("unicode Data is ", unicodeData)

print("Unicode JSON Data encoding using utf-8")
encodedUnicode = json.dumps(unicodeData, ensure_ascii=False).encode('utf-8')
print("JSON character encoding by setting ensure_ascii=False", encodedUnicode)

print("Decoding JSON", json.loads(encodedUnicode))

Output::

unicode Data is  {'string1': '明彦', 'string2': 'ø'}
Unicode JSON Data encoding using utf-8
JSON character encoding by setting ensure_ascii=False b'{"string1": "\xe6\x98\x8e\xe5\xbd\xa6", "string2": "\xc3\xb8"}'
Decoding JSON {'string1': '明彦', 'string2': 'ø'}

Mã hóa cả Unicode và ASCII (trộn dữ liệu) thành JSON bằng Python

Trong ví dụ này, chúng ta sẽ thấy cách mã hóa từ điển Python thành JSON có chứa cả dữ liệu Unicode và ASCII.

import yaml
import json
json_data = yaml.load(json.dumps(request.json()))
0

Output::

import yaml
import json
json_data = yaml.load(json.dumps(request.json()))
1

Python thoát khỏi các ký tự không phải ASCII trong khi mã hóa nó thành JSON

Hãy để xem cách lưu trữ tất cả các nhân vật không phải là ASCII đã trốn thoát trong JSON. Đó là một cách an toàn để đại diện cho các ký tự Unicode. Bằng cách cài đặt

dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])
9, chúng tôi đảm bảo rằng JSON sẽ có các ký tự ASCII hợp lệ (ngay cả khi chúng có Unicode bên trong).

import yaml
import json
json_data = yaml.load(json.dumps(request.json()))
2

Output::

import yaml
import json
json_data = yaml.load(json.dumps(request.json()))
3