嗨,我有这个函数,它将列表的元素映射并连接成一个字符串。我的问题是,有一种方法可以在列表中最初为字符串的所有元素周围添加引号。
def blahblahblah(input):
code = "result = %s\n" % (", ".join(map(str, input)))
print code
x = ["dasdad", 131]
blahblahblah(x)
//normal output ------result = dasdad, 131
//desired output ------result = 'dasdad', 131
答案 0 :(得分:2)
您可以将str.format
包裹在您想要的任何内容中来映射:
def blahblahblah(inp):
code = "result = {}\n".format(", ".join(map("'{}'".format, inp)))
print code
因此,列表中的每个元素都将在输出中用引号括起来:
In [2]: x = ['dasdad', 131]
In [3]: blahblahblah(x)
result = 'dasdad', '131'
或者仅针对str类型,使用 isinstance :
def blahblahblah(inp):
code = "result = {}\n".format(", ".join(['"{}"'.format(s) if isinstance( s, str) else str(s) for s in inp)])
print code
这给了你:
In [5]: x = ["dasdad", 131]
In [6]: blahblahblah(x)
result = 'dasdad', 131
答案 1 :(得分:2)
Padraic已经很好地回答了你提出的问题,所以我不会在这里重复他的工作。相反,我正在迈出一步,试图以更一般的形式回答你的问题。
它看起来就像你试图在格式化输出中重新创建Python文字一样。对于字符串和数字等对象,内置的repr
函数将为您完成此操作。
>>> def blahblahblah(input):
... code = "result = %s\n" % (", ".join(map(repr, input))) # Map repr instead of str
... print code
...
>>> blahblahblah(["dasdad", 131])
result = 'dasdad', 131
repr
是用于探索和调试的最通用的Python内置之一,其实用程序当然不仅限于字符串格式。如果你还不熟悉它,我强烈建议你这样做!
答案 2 :(得分:1)
您可以先在字符串中添加引号。
x = [ "\"" + i +"\"" if isinstance(i,str) else i for i in x]
code = "result = %s\n" % (", ".join(map(str, x)))
print code
result =" dasdad",131
print "result = %s\n" % (", ".join(map(str, ["\"" + i +"\"" if isinstance(i,str) else i for i in x])))