加入包含仅围绕字符串的引号的混合类型列表

时间:2017-11-20 21:59:23

标签: python string list

我有一个混合对象类型(字符串和整数)的列表,我想要做的是.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' 语句而被删除,但是我已经陷入困境,想出一个优雅的方法产生我想要的字符串,并想知道是否有人可以帮助提供有关如何这样做的一些提示。

提前致谢!

2 个答案:

答案 0 :(得分:6)

怎么样:

str(tuple(sample_list))

返回:

"('abcd', 'chicken', 'wasd', 1, 'blah', 3, 'foo', 'bar')"

答案 1 :(得分:2)

您可以使用"(" + ", ".join(map(repr, sample_list)) + ")"。请注意,这将根据字符串中的内容使用不同的引号,但这可能是合乎需要的。要修复问题中的代码,您可以使用ternary operator,而不是使用if作为理解的条件。