目前,为了在字符串周围添加单引号,我想到的最佳解决方案是创建一个小的包装函数。
def foo(s1):
return "'" + s1 + "'"
有没有更简单、更Pythonic的方法来完成这个任务?
目前,为了在字符串周围添加单引号,我想到的最佳解决方案是创建一个小的包装函数。
def foo(s1):
return "'" + s1 + "'"
有没有更简单、更Pythonic的方法来完成这个任务?
怎么样:
def foo(s1):
return "'%s'" % s1
format()
方法,如我所示的答案。 - Óscar López我只是想强调一下@metatoaster在上面评论中说的话,因为我起初没注意到。
使用repr(string)将添加单引号,然后在其外面添加双引号,然后在其外面添加带有转义内部单引号的单引号,再进行其他转义。
使用内置函数repr()更直接,除非存在其他冲突。
s = 'strOrVar'
print s, repr(s), repr(repr(s)), ' ', repr(repr(repr(s))), repr(repr(repr(repr(s))))
# prints: strOrVar 'strOrVar' "'strOrVar'" '"\'strOrVar\'"' '\'"\\\'strOrVar\\\'"\''
文档中说明repr()基本上是eval()的反向操作:
"对于许多类型,此函数尝试返回一个字符串,该字符串将在传递给eval()时产生相同值的对象.."
使用反引号表示可能更短,但在Python 3+版本中已被移除。 有趣的是,StackOverflow使用反引号来指定代码范围,而不是突出显示代码块并单击代码按钮-尽管它有一些有趣的行为。
这适用于Python 3.5及以上版本。
def foo2(char):
return("'{}'".format(char))
s1.__repr__()
并查看此行为是否适合您所需的用途。 - metatoaster+
,其中一些需要单引号,而另一些则不需要。为了节省行空间,我想出了以上解决方案。 - pyCthonthat's
),使用您的方法将导致'that's'
。这对于您的系统是有意或允许的吗?此外,出于性能原因,建议使用str.join
而不是使用+
将单个字符串片段添加到列表中。 - metatoasterfoo
函数的输出。 - pyCthon__repr__()
。 - metatoaster