2011-06-24 42 views
13

Tôi hiện đang thử nghiệm một dịch vụ web trả lại một lượng lớn dữ liệu JSON dưới dạng từ điển. Khóa và giá trị cho các từ điển đó là tất cả các chuỗi unicode và do đó chúng in nhưLàm thế nào để làm cho Python 2.x chuỗi Unicode không in như u'string '?

{u'key1':u'value', u'key2':u'value2'} 

khi được in trên màn hình trong trình thông dịch tương tác.

Bây giờ hãy tưởng tượng rằng đây là từ điển gồm 3 từ sâu, 40 phần tử. Tất cả các ký tự u này làm lộn xộn màn hình, làm cho khó có thể tìm ra, trong nháy mắt, dữ liệu thực sự là gì. Ngay cả khi sử dụng pprint.

Có cách nào để thông báo cho người phiên dịch rằng tôi không quan tâm đến sự khác biệt giữa chuỗi thông thường và chuỗi unicode không? Tôi không cần hoặc muốn u.

Điều duy nhất tôi tìm thấy có thể đã giúp ích là biến môi trường PYTHONIOENCODING. Rất tiếc, đặt cài đặt thành 'ascii' hoặc 'latin-1' không làm cho các số u của bạn biến mất.

Tôi đang sử dụng Python 2.6 và tôi sử dụng trình thông dịch python thông thường hoặc iPython.

+0

có thể trùng lặp: http://stackoverflow.com/questions/761361/suppress-the-uprefix-indicating-unicode-in-python-strings –

+4

Chuyển sang Python 3.x. JK –

Trả lời

15

nếu nó json bạn muốn, chỉ cần in json:

>>> import json 
>>> print json.dumps({u'key1':u'value', u'key2':u'value2'}, indent=4) 
{ 
    "key2": "value2", 
    "key1": "value" 
} 
+0

Hmmm, có thể hoạt động. Khi tôi trở lại văn phòng, tôi sẽ thử nó. Cảm ơn vì tiền hỗ trợ. – CoreDumpError

+0

Ok, sau khi thử điều này, nó hoàn hảo! Về cơ bản, đó là ý tưởng của Santiago từ câu trả lời khác, với json.dumps() là "chức năng in từ điển". – CoreDumpError

0

Tại sao bạn không tạo chức năng của riêng mình để in từ điển? Định dạng mặc định của Python là OK để gỡ lỗi nhanh chóng, dễ dàng, nhưng hoàn toàn không thích hợp cho một từ điển sâu gồm 40 phần tử.

+0

Hmm, điều đó có thể hiệu quả, nhưng nó sẽ nỗ lực nhiều hơn vấn đề này thực sự đáng giá. Tôi đã hy vọng cho một cái gì đó giống như một chuyển đổi dòng lệnh để thông dịch viên. Tôi đã sử dụng pprint, mà tất cả các định dạng làm việc để làm cho các từ điển sâu sắc một phần có thể đọc được, và tôi không muốn tái phát minh ra bánh xe. – CoreDumpError

+0

tốt, bạn có thể quấn dây của bạn và ghi đè lên phương pháp 'repr' của họ. – slezica

Các vấn đề liên quan