我正在尝试使用Java模拟Python的repr;这包括尽可能使用单引号。 Python使用什么方法来确定它应该发出什么类型的引号?
编辑:我正在寻找一些实际的代码,在Python的网站上。我已经查看了Objects/unicodeobject.c
和Objects/strlib/
的一些内容,但除了Unicode的转义序列之外我找不到任何其他内容。
答案 0 :(得分:1)
我猜它会使用单引号,除非它需要在字符串中使用它。
如以下所示:
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 \'
答案 1 :(得分:1)
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的外观。
注意:我已更新此答案以删除过时的信息并指向当前的回购
答案 2 :(得分:1)
我可以从Objects/byteobject.c
(here)中提取出来,这是执行此操作的部分:
quote = '\'';
if (smartquotes && squotes && !dquotes)
quote = '"';
if (squotes && quote == '\'') {
if (newsize > PY_SSIZE_T_MAX - squotes)
goto overflow;
newsize += squotes;
}
因此,如果没有双引号并且有单引号,则它使用双引号,否则使用单引号。