pprint
打印您傳遞它的對象的表示形式。從the docs
的pprint模塊提供能力「漂亮地打印」任意 Python數據結構,其中可被用作輸入到 解釋的形式。
而且「它可以被用作輸入解釋一表」是指你的對象的表示,即它什麼方法__repr__
回報。
如果要使用__str__
方法而不是__repr__
打印字符串,請不要使用pprint
。
下面是一個Python 3代碼片段會找出得到使用\u
換碼代表字符:
for i in range(1500):
c = chr(i)
r = repr(c)
if r'\u' in r:
print('{0:4} {0:04x} {1} {2}'.format(i, r, c))
輸出
888 0378 '\u0378'
889 0379 '\u0379'
896 0380 '\u0380'
897 0381 '\u0381'
898 0382 '\u0382'
899 0383 '\u0383'
907 038b '\u038b'
909 038d '\u038d'
930 03a2 '\u03a2'
1328 0530 '\u0530'
1367 0557 '\u0557'
1368 0558 '\u0558'
1376 0560 '\u0560' ՠ
1416 0588 '\u0588' ֈ
1419 058b '\u058b'
1420 058c '\u058c'
1424 0590 '\u0590'
1480 05c8 '\u05c8'
1481 05c9 '\u05c9'
1482 05ca '\u05ca'
1483 05cb '\u05cb'
1484 05cc '\u05cc'
1485 05cd '\u05cd'
1486 05ce '\u05ce'
1487 05cf '\u05cf'
注意,碼點> 0xFFFF的獲得代表必要時使用\U
轉義碼。
for i in range(65535, 65600):
c = chr(i)
r = repr(c)
if r'\u' in r.lower():
print('{0:4} {0:04x} {1} {2}'.format(i, r, c))
輸出
65535 ffff '\uffff' �
65548 1000c '\U0001000c'
65575 10027 '\U00010027'
65595 1003b '\U0001003b'
65598 1003e '\U0001003e'
聰明的編寫代碼來尋找他們,這可以很好地回答問題2,但不是其他問題。也許對完整列表的分析會給出線索。當然,如果代碼沒有被Unicode定義爲字符,那麼人們會希望\ u註釋,但是對於定義好的字符,我感到很驚訝。 – Victoria
@Victoria \ x,\ u和\ u表示法在字符串的repr中使用時,您不應該感到驚訝。對象的repr必須是健壯且明確的。它被設計爲供程序員使用,例如在源代碼中直接在解釋器中使用。它不應該顯示給用戶:他們應該只看到使用字符串的__str__方法創建的正確格式化的輸出,例如'print(my_string)'顯示的內容。 –
@維多利亞(續)有關此重要主題的更多信息,請參閱文檔中的__str__'與'__repr__'的討論,包括教程。另請參閱[這裏](http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python)和相關的鏈接頁面。 –