在2D列表,分隔符,python中的元素中分解字符串

时间:2014-08-21 06:25:53

标签: python arrays string list

我有一个具有这种结构的2D数组(列表列表):

mylist = [['Bob','AA',3,'a string with a - convenient - delimiter'],
          ['Sally','BB',2,'a string with a - great - delimiter'],
          ['Jim','CC',2,],
          ['John','BB',2,'a string with a - silly - delimiter']]

如您所见,某些行的末尾有一个长字符串。在这个例子中,Bob,Sally和John有一个包含一对连字符的字符串' - '。我想把连字符中的数据作为自己的元素/列分开。在右边附加是好的。以下是我拍摄的内容:

newList = [['Bob','AA',3,'a string with a - convenient - delimiter', 'convenient'],
              ['Sally','BB',2,'a string with a - great - delimiter', 'great'],
              ['Jim','CC',2,],
              ['John','BB',2,'a string with a - silly - delimiter', 'silly']]

从这个例子中可以看出,并非每一行都有长字符串。如果确实存在,它将始终位于同一列中,在本例中为index [3]。如何在python中实现我想要的结果?任何帮助都是超级的。

编辑:

这似乎有效并且需要的代码量最少:

for i, val in enumerate(mylist):
    if len(val) > 3:
        array = val[3].split("-")
        val.insert(4,array[1].strip())
        print val

另一个条件可能是:

if '-' in val[3]:

1 个答案:

答案 0 :(得分:0)

mylist = [['Bob','AA',3,'a string with a - convenient - delimiter'],
          ['Sally','BB',2,'a string with a - great - delimiter'],
          ['Jim','CC',2,],
          ['John','BB',2,'a string with a - silly - delimiter']]

newlist=[]
for i in mylist:
    temp=[]
    for j in i:
        if '-' in str(j):
            temp.append(j)
            temp.append(j.split('-')[1].strip())
        else:
            temp.append(j)
    newlist.append(temp)
print newlist
#output 

[['Bob', 'AA', 3, 'a string with a - convenient - delimiter', 'convenient'],
 ['Sally', 'BB', 2, 'a string with a - great - delimiter', 'great'],
 ['Jim', 'CC', 2],
 ['John', 'BB', 2, 'a string with a - silly - delimiter', 'silly']]