有头或尾的join()有成语吗?

时间:2012-01-26 21:28:28

标签: python string-concatenation

''。join(list)非常棒。但是,我注意到我通常不得不在开头和结尾添加其他字符。我已经通过几种方式完成了这项工作,但感觉有一种我无法想到的更易读的方式。

有优雅的处理方式吗?我只是过度思考这个吗?

例如:

["column1", "column2", "column3"]

期望的输出:

 | column1 | column2 | column3 | 

没有开始和结束的代码(简明扼要!)

print ' | '.join(mylist)

头部和尾部:

print ' | ' + ' | '.join(mylist) + ' | '
print ' | ', ' | '.join(mylist), ' | '
print " | {} | ".format(' | '.join(mylist))
print ' | '.join([''] + mylist + ['']) (ugh)

5 个答案:

答案 0 :(得分:3)

我认为第三种选择是你可以得到的壁橱:

print " | {} | ".format(' | '.join(list))

答案 1 :(得分:3)

我没有看到比你已经找到的方法更好的方法。这是我的偏好,修复了在开头和结尾引入额外空格的错误:

print ' |' + ' | '.join(list) + '| '

是什么让你对此感到不舒服?它的可读性吗?在不同的地方生成相同的字符串时必须重复自己?如果是这样,那么这两个问题的答案就是将这一行打包成一个函数,并让调用者使用它。

答案 2 :(得分:0)

另一种选择:

" | " + "".join(x + " | " for x in lst)

我认为没有一种“好”的方法可以做到这一点。如果你需要这么多,写一个函数来做你需要的。

答案 3 :(得分:0)

如果你想要一行:

print "| %s |" % (' | '.join(list)) 

但可能会过度思考它。

答案 4 :(得分:0)

在列表的开头和结尾添加额外的空字符串可能允许您加入而不“重复自己” - 您仍然可以通过更改一个字符来更改分隔符。

" | ".join([""] + lst + [""])

或者,如果lst很大,请避免制作临时列表:

from itertools import chain
" | ".join(chain([""], lst, [""])