4

我有以下列表:

[('Steve Buscemi', 'Mr. Pink'), ('Chris Penn', 'Nice Guy Eddie'), ...]

我需要将其转换为以下格式的字符串:

"(Steve Buscemi, Mr. Pink), (Chris Penn, Nice Guy Eddit), ..."

我试着做

str = ', '.join(item for item in items)

但遇到以下错误:

TypeError: sequence item 0: expected string, tuple found

我将如何进行上述格式化?

4

5 回答 5

11
', '.join('(' + ', '.join(i) + ')' for i in L)

输出:

'(Steve Buscemi, Mr. Pink), (Chris Penn, Nice Guy Eddie)'
于 2012-09-18T21:27:26.503 回答
5

你很近。

str = '(' + '), ('.join(', '.join(names) for names in items) + ')'

输出:

'(Steve Buscemi, Mr. Pink), (Chris Penn, Nice Guy Eddie)'

分解:外括号是单独添加的,而内括号是由第一个生成的'), ('.join。括号内的名称列表使用单独的', '.join.

于 2012-09-18T21:26:35.650 回答
3
s = ', '.join( '(%s)'%(', '.join(item)) for item in items )
于 2012-09-18T21:25:24.463 回答
1

您可以简单地使用:

print str(items)[1:-1].replace("'", '') #Removes all apostrophes in the string

您想省略列表中方括号的第一个和最后一个字符。正如许多评论中提到的,这会在字符串周围留下单引号。您可以使用replace.

注意正如@ovgolovin 所指出的,这将删除所有撇号,即使是名称中的撇号

于 2012-09-18T21:25:03.027 回答
0

你很亲近……

print ",".join(str(i) for i in items)

或者

print str(items)[1:-1]

或者

print ",".join(map(str,items))
于 2012-09-18T21:24:21.920 回答