2012-04-02 273 views
3

的名单我有一个字符串列表如下:添加尾随空格为字符串

my_list = ['Lorem ipsum dolor sit amet,', 'consectetur adipiscing elit. ', 'Mauris id enim nisi, ullamcorper malesuada magna.'] 

我想这些项目基本上合并成一个可读的字符串。我的逻辑如下:

If the list item does not end with a space, add one 
otherwise, leave it alone 
Then combine them all into one string. 

我能用这几种不同的方法完成这个。

使用列表理解:

message = ["%s " % x if not x.endswith(' ') else x for x in my_list] 
messageStr = ''.join(message) 

拼写出来(我认为这是一个有点更具可读性):

​​3210

我的问题是,有更简单的,“更理智”完成这个的方法?

+1

这是什么不“理智”? – 2012-04-03 00:03:22

+0

那么,它本身并不是疯狂的,但我可以告诉我让事情变得更加困难。幸运的是Nolen找到了一个好的解决方案。 – Nitzle 2012-04-03 00:16:21

回答

5
>>> my_list = ['Lorem ipsum dolor sit amet,', 'consectetur adipiscing elit. ', 'Mauris id en 
im nisi, ullamcorper malesuada magna.'] 
>>> ' '.join(string.strip() for string in my_list) 
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris id enim nisi, ullamcorper 
malesuada magna.' 
+0

谢谢!这样做更有意义。一个问题,为什么使用rstrip()而不是strip()? – Nitzle 2012-04-03 00:07:12

+0

我最初使用strip,但是你曾经说过你处理的是在结果中“结束”的字符串,所以我想我们只需要去掉右侧的空格/我不想删除左侧的空格很重要。如果我错了,我会很乐意将它改为剥离。 – 2012-04-03 00:08:52

+0

在我的脚本中,我从数据库中获取这些字符串(每行都有一部分消息)。从我目前看到的数据来看,各种各样的杂乱无章。我认为我会安全并使用strip(),因为连接应该注意strip()之后的句子。 – Nitzle 2012-04-03 00:13:35

1

你可以简单地在列表中理解有点用strip

' '.join([x.strip() for x in list]) 

这也是最好不要打电话给你的榜“榜首”,因为这是一个内置。

+0

好主意,我在原始问题中更改了变量名称。谢谢。 – Nitzle 2012-04-03 00:21:52