格式化列表python的元素

时间:2016-04-12 22:22:26

标签: python python-2.7

嗨,我有这个函数,它将列表的元素映射并连接成一个字符串。我的问题是,有一种方法可以在列表中最初为字符串的所有元素周围添加引号。

  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

3 个答案:

答案 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])))