连接带头或带尾的join()有习语吗?

4 投票
5 回答
754 浏览
提问于 2025-04-17 11:10

用''.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

在列表的开头和结尾加上额外的空字符串,这样可以让你在连接字符串的时候避免“重复自己”——你只需要改一个字符就能改变分隔符。

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

或者,如果lst的内容很多,可以避免创建一个临时的列表:

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

我觉得第三个选项是最接近你想要的结果的:

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

我觉得你找到的方法已经很不错了。这里是我更喜欢的一种方式,修正了你在开头和结尾多加了一个空格的错误:

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

你对这个有什么不舒服的地方吗?是因为可读性吗?还是说在不同地方生成相同字符串时需要重复自己?如果是这样的话,解决这两个问题的办法就是把这一行代码封装成一个函数,然后让需要用到的地方调用这个函数。

撰写回答