簡體   English   中英

Python如何處理字符串的repr?

[英]How does Python handle repr for strings?

我正在嘗試完全在Java中模擬Python的repr。 這包括在可能的情況下使用單引號。 Python使用哪種方法來確定應該發出什么樣的引號?

編輯:我正在尋找一些實際的代碼,在Python網絡中的​​某個地方。 我已經看過Objects/unicodeobject.c和一些Objects/strlib/ ,但是除了Unicode的轉義序列外,我什么也找不到。

我猜它會使用單引號,除非它需要在字符串中使用它。

如圖所示:

print repr("Hello")
print repr('Hello')
print repr("Hell'o")
print repr('Hell"o')
print repr("""Hell'o Worl"o""")

輸出:

'Hello'
'Hello'
"Hell'o" # only one using double quotes
'Hell"o'
'Hell\'o Worl"o' # handles the single quote with a \'

https://github.com/python/cpython/tree/master/Objects/unicodeobject.c

static PyObject *
unicode_repr(PyObject *unicode)
{ ...

unicode_repr在這里github.com/python/cpython/blob/master/Objects/unicodeobject.c的外觀。

注意:我已經更新了此答案,以刪除過時的信息並指向當前回購

從我可以從Objects/byteobject.c提取的Objects/byteobject.c此處 )中,這是執行此操作的部分:

quote = '\'';
if (smartquotes && squotes && !dquotes)
    quote = '"';
if (squotes && quote == '\'') {
    if (newsize > PY_SSIZE_T_MAX - squotes)
        goto overflow;
    newsize += squotes;
}

因此,如果沒有雙引號並且有單引號,則使用雙引號,否則使用單引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM