我有一个混合对象类型(字符串和整数)的列表,我想要做的是.join将该列表放入一个字符串中,每个字符串都用引号括起来BESIDES整数。例如,如果我有这个列表:
sample_list = ['abcd', 'chicken', 'wasd', 1, 'blah', 3, 'foo', 'bar']
我想从中生成以下字符串:
sample_string = "('abcd', 'chicken', 'wasd', 1, 'blah', 3, 'foo', 'bar')"
这就是我所拥有的:
sample_string = "(" + ', '.join("'{0}'".format(item) for item in sample_list if type(item) is not int) + ")"
显然我的代码是错误的,因为我的整数值因' if' 语句而被删除,但是我已经陷入困境,想出一个优雅的方法产生我想要的字符串,并想知道是否有人可以帮助提供有关如何这样做的一些提示。
提前致谢!
答案 0 :(得分:6)
怎么样:
str(tuple(sample_list))
返回:
"('abcd', 'chicken', 'wasd', 1, 'blah', 3, 'foo', 'bar')"
答案 1 :(得分:2)
您可以使用"(" + ", ".join(map(repr, sample_list)) + ")"
。请注意,这将根据字符串中的内容使用不同的引号,但这可能是合乎需要的。要修复问题中的代码,您可以使用ternary operator,而不是使用if作为理解的条件。