连接列表的某些部分。删除空格。

时间:2015-02-05 19:30:01

标签: python list concatenation list-comprehension spaces

我有一个逐字逐句列出的名单,我想把各个名字连在一起。 这就是我目前所拥有的:

['S', 't', 'u', 'a', 'r', 't', ' ', 'S', 't', 'e', 'v', 'e', ' ', 'A', 'n', 'd', 'r', 'e', 'w', ' ', 'L', 'u', 'k', 'e', ' ', 'S', 'h', 'a', 'n', 'e', 'y', ' ', 'L', 'u', 'k', 'e', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'R', 'o', 'b', ' ']

我想把它变成这个:

['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']

4 个答案:

答案 0 :(得分:1)

info成为您的清单。

concat = "".join(info)
names = concat.split()
print names

但请参阅Two-Bit Alchemist的评论。

答案 1 :(得分:1)

使用itertools.groupby并使用str.isspace进行分组:

>>> from itertools import groupby
>>> lst = ['S', 't', 'u', 'a', 'r', 't', ' ', 'S', 't', 'e', 'v', 'e', ' ', 'A', 'n', 'd', 'r', 'e', 'w', ' ', 'L', 'u', 'k', 'e', ' ', 'S', 'h', 'a', 'n', 'e', 'y', ' ', 'L', 'u', 'k', 'e', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'M', 'o', 'l', 'e',  'y', ' ', 'R', 'o', 'b', ' ']
>>> [''.join(g) for k, g in groupby(lst, key=str.isspace) if not k]
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']
  

我正在阅读一个文本文件。我把文本分解并放入   一个清单,我现在想知道如何获得它,以便它识别出一个空间   存在并相应地连接数据。我不知道怎么做   虽然

我不确定您是如何阅读此文字的,但您的处理方式不正确。请勿在该行或您从该文件中读取的整个文本中致电list()

>>> s = 'Stuart Steve Andrew Luke Shaney Luke Moley Moley Rob'
>>> list(s)
['S', 't', 'u', 'a', 'r', 't', ' ', 'S', 't', 'e', 'v', 'e', ' ', 'A', 'n', 'd', 'r', 'e', 'w', ' ', 'L', 'u', 'k', 'e', ' ', 'S', 'h', 'a', 'n', 'e', 'y', ' ', 'L', 'u', 'k', 'e', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'M', 'o', 'l', 'e', 'y', ' ', 'R', 'o', 'b']

如果您想要一个单词列表,只需在您阅读的文字上使用str.split

>>> s.split()
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']

答案 2 :(得分:0)

你可以迭代列表中的字符,这是一个小例子:

# chars being your list
names = []

current_name = ""
for current_char in chars:
     if current_char == ' ':
         names.append(current_name)
         current_name = ""
     else:
          current_name += current_char

 return names

答案 3 :(得分:0)

li视为输入列表 -

>>> [i for i in "".join(li).split(" ") if i.strip() != ""]
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']

列表理解只是排除空字符串。