2017-03-19 57 views
2

Python中的換碼序列支持十六進制(如'\xab')和八進制(如\12)值。有沒有辦法將ASCII碼指定爲十進制值(可能類似於\n99)?我搜索了一下,但很驚訝沒有發現。使用十進制ASCII值在字符串中轉義序列?

+1

給出[關於轉義碼的官方文檔中的部分](https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals),我會說不。 – Evert

+0

不使用轉義碼,但'chr'可能會有用。 – busybear

+0

如果你正在尋找一些不存在的東西,你沒有找到任何東西並不奇怪。 – Barmar

回答

1

你正在尋找的東西在Python中不存在。

數字轉義代碼通常以十六進制表示(或不太頻繁,八進制),因爲這是它們預期用途的明顯選擇。 從在Python語言參考2.4.1. String and Bytes literals表:

注:
[...]
3.在字面一個字節,十六進制和八進制逃逸表示字節與給定的值。在字符串文字中,這些轉義字符表示具有給定值的Unicode字符

(着重號。 感謝埃弗特在一個comment提供的鏈接。)

要表示字節,你必須精確地指定8位。 在每四位數字4位,這需要兩個十六進制數字完全。 將8位轉換爲2位十六進制數字並返回比將這些相同的8位轉換爲兩點十進制數字和從兩點轉換成十進制數字要容易得多---不需要在頭部乘以(或除)16。

要表示Unicode字符,則必須以Unicode 代碼空間,這是defined爲「到10FFFF 的範圍從0的整數的」指定一個代碼點。 因爲這些都是以十六進制(U+0020U+FFFE等)正式表示的,所以十六進制轉義碼是唯一合理的選擇 - 它們完全不需要任何努力。

相關問題