连接列表的某些部分。删除空格。
Concatenating certain parts of a list. Removing 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']
您可以遍历列表中的字符,这里是一个小例子:
# 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
让 info
成为您的清单。
concat = "".join(info)
names = concat.split()
print names
但是看到二位炼金术师的评论
使用itertools.groupby
and group using 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']
I am reading from a text file. I broke up the text and placed it into
a list, I'm now wondering how to get it so it recognizes when a space
is present and it concatenates the data accordingly. I'm not sure how
though
我不确定你是如何阅读这段文字的,但你处理它的方式不正确。不要在行上调用 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']
考虑将 li
作为输入列表 -
>>> [i for i in "".join(li).split(" ") if i.strip() != ""]
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']
列表理解只是排除空字符串。
我有一个逐字母拆分的名称列表,我想将各个名称连接在一起。 这是我目前拥有的:
['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']
您可以遍历列表中的字符,这里是一个小例子:
# 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
让 info
成为您的清单。
concat = "".join(info)
names = concat.split()
print names
但是看到二位炼金术师的评论
使用itertools.groupby
and group using 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']
I am reading from a text file. I broke up the text and placed it into a list, I'm now wondering how to get it so it recognizes when a space is present and it concatenates the data accordingly. I'm not sure how though
我不确定你是如何阅读这段文字的,但你处理它的方式不正确。不要在行上调用 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']
考虑将 li
作为输入列表 -
>>> [i for i in "".join(li).split(" ") if i.strip() != ""]
['Stuart', 'Steve', 'Andrew', 'Luke', 'Shaney', 'Luke', 'Moley', 'Moley', 'Rob']
列表理解只是排除空字符串。