我正在尝试根据空格从列表中拆分字符串。
我的代码:
line=['abc def','ghi jk']
for x in line:
word=x.split(' ')
print(word)
预期输出:
['abc','def','ghi','jk']
但是我一直得到如下输出:
['ghi','jk']
我要去哪里错了?
答案 0 :(得分:1)
每次word=x.split(' ')
运行时,words
的先前值将被新值替换。在您的情况下,循环的第一次迭代将创建word = ['abc','def']
,第二次迭代将其替换为word = ['ghi','jk']
。
您需要将每次迭代的结果存储到新列表中:
line = ['abc def', 'ghi jk']
result = []
for x in line:
result.extend(x.split(' '))
print(result)
答案 1 :(得分:1)
您可以先用空格将字符串连接起来,然后再用空格将字符串分开:
' '.join(line).split()
这将返回:
['abc', 'def', 'ghi', 'jk']
答案 2 :(得分:0)
整齐的单线:
给出line = ['abc def', 'ghi jk']
word = [item for sublist in [elem.split() for elem in line] for item in sublist]
那么你有
>>> word
['abc', 'def', 'ghi', 'jk']
这里发生了什么? [elem.split() for elem in line]
是list-comprehension,将原始列表elem.split()
中的每个元素取line
,并将每个结果放入列表中。
>>> [elem.split() for elem in line]
[['abc', 'def'], ['ghi', 'jk']]
然后,假设我们再次使用list-comprehension,并从新嵌套列表的每个元素中获取它具有的每个元素,并将其放入列表中。该过程称为列表的展平,其形式为:
flattened_list = [item for sublist in nestedlists for item in sublist]
答案 3 :(得分:0)
将其拆分,然后展平
line = ['abc def','ghi jk']
temp = [s.split(' ') for s in line]
res = [c for s in temp for c in s]
print(res)
结果
['abc','def','ghi','jk']
或使用 operator 和 reduce
import operator
from functools import reduce
line = [s.split(' ') for s in line]
res = reduce(operator.concat, line)
print(res)
结果:
['abc', 'def', 'ghi', 'jk']