我有一个具有这种结构的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]:
答案 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']]