如何在python中拆分列表项

时间:2014-07-24 16:18:14

标签: python

假设我有一个如下列表:

names= ["my name xyz","your name is abc","her name is cfg zyx"]

我想将它们拆分如下:

my_array[0]= ["my","name","xyz"]
my_arrray[1]= ["your","name","is","abc"]
my_array[2]= ["her","name","is","cfg","zyx"]

这样我就可以单独选择单词:

my_array[0][0]= my
my_array[0][1]= name
my_array[1][2]= is
my_array[0][2]= xyz

我试过的python代码如下:

names_abc= names.splitlines(True)
#print(names_abc)

i=0
while i < len(names_abc):
    my_array= names_abc[i].split()
    print(my_array[0])
    i=i+1

但是这段代码并没有达到我的预期。它会拆分列表但不能单独选择单词。例如,上面代码的输出如下:

我 您的 她的

这绝对是错误的。我将很高兴得到python专家的帮助。提前谢谢。

3 个答案:

答案 0 :(得分:3)

您可以使用list comprehension定义my_array

my_array = [phrase.split() for phrase in names]

相当于

my_array = list()
for phrase in names:
    my_array.append(phrase.split())

演示:

In [21]: names= ["my name xyz","your name is abc","her name is cfg zyx"]

In [22]: my_array = [phrase.split() for phrase in names]

In [23]: my_array
Out[23]: 
[['my', 'name', 'xyz'],
 ['your', 'name', 'is', 'abc'],
 ['her', 'name', 'is', 'cfg', 'zyx']]

In [24]: my_array[0][1]
Out[24]: 'name'

以这种方式定义my_array的一个问题是:

while i < len(names_abc):
    my_array= names_abc[i].split()

每次通过my_arraywhile-loop分配给新列表。因此my_array不会成为列表列表。相反,在while-loop之后,它只保留其最后一个值。

不要打印my_array[0],而是尝试print(my_array)本身。为什么你得到你得到的结果可能会更清楚。

答案 1 :(得分:1)

您可以split()列表中的每个元素,默认情况下会在空格中分割。

>>> names= ["my name xyz","your name is abc","her name is cfg zyx"]
>>> [i.split() for i in names]
[['my', 'name', 'xyz'], ['your', 'name', 'is', 'abc'], ['her', 'name', 'is', 'cfg', 'zyx']]

答案 2 :(得分:0)

我会创建一个新列表,并用包含从您的起始列表中的字符构建的temporaray字符串的列表填充它。

临时字符串以空格结束,当字符串完成时,它将被添加到文本列表(list_tmp)。

将所有项目作为字符串处理并添加到临时列表后,我们将该列表附加到最终列表中:

a=["my name xyz","your name is abc","her name is cfg zyx"]

l=[]

for i in enumerate(a):
        tmp_str = ''
        list_tmp=[]
        for j in i[1]:
                if " " in j:
                        list_tmp.append(tmp_str)
                        tmp_str=''
                else:
                        tmp_str+=j
        else:
                list_tmp.append(tmp_str)

        l.append(list_tmp)

print l
print l[0][1]