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

在2D列表中的元素内断开字符串,分隔符,python,python,arrays,string,list,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']]

我有一个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']]
从本例中可以看出,并非每一行都有长字符串。如果它确实存在,它将始终位于同一列中,在本例中为索引[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]:
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']]