Python 从列表列表中删除特定短语

Python 从列表列表中删除特定短语,python,Python,我已将数据存储在列表列表中(我无法使用dict,因为我需要重复的密钥)。清单如下: data = [[1, "name email@email.com address"], [2, "name2 email@@email2.com address"], ...] 我的目标是从数据列表(即列表列表)中删除电子邮件地址。不幸的是,电子邮件地址都是不同的。它们只有一个共同特征:它们都包含符号“@” 我试着使用列表理解法。但是,我只能这样做:删除整个元素,即“name”email@email.com“

我已将数据存储在列表列表中(我无法使用dict,因为我需要重复的密钥)。清单如下:

data = [[1, "name email@email.com address"], [2, "name2 email@@email2.com address"], ...]
我的目标是从数据列表(即列表列表)中删除电子邮件地址。不幸的是,电子邮件地址都是不同的。它们只有一个共同特征:它们都包含符号“@”

我试着使用列表理解法。但是,我只能这样做:删除整个元素,即“name”email@email.com“地址”被完全删除:

newlist = [element for element in data.split() if "@" not in elment]
我想把“名字”分开email@email.com使用“”作为分隔符将“地址”添加到子列表中。然而,这也带来了一个问题:它破坏了格式。对我来说,按照最初的格式将列表分组是很困难的,因为有时“名称”email@email.com“地址”包含三个以上的单词。例如,它可以是“name1 name2 name3”email@email.comemail2 email3 address1 address2 address3“

这样做的最佳方式是什么

编辑:

为了回答亚当·斯密的问题,我正在寻找

data = [[1, "name address"], [2, "name2 address"], ...]

作为我的输出。换句话说,原始格式(列表列表,其中子列表包含两个元素,一个是数字,另一个是“名称、地址、地址1等”)保留,没有电子邮件地址。

我认为您应该在“@”字符上拆分,然后在拆分对生成的字符串列表中迭代,使用rfind从第一个元素的结尾开始查找空格字符,然后从开始到第一个空格查找第二个元素。然后,删除这些子字符串。如果是ca如果可能会有多个电子邮件地址,您需要对所有剩余的元素执行相同的操作(第二个和第三个元素配对,第三个和第四个元素配对,等等)查看是否有任何其他子字符串要删除。

我不太确定您要查找的是什么。您能给出包括边缘案例在内的预期输出吗?@AdamSmith,如果您不知道OP要查找的是什么,您可能不应该回答;)@wnnmaw当我注意到我误解了他的问题时,我几乎立即删除了他,然后询问了他澄清;)@AdamSmith我回答了你的问题。
data = [[1, "name email@email.com address"], [2, "name2 email@@email2.com address"],[3, "name1 name2 name3 email@email.com email2 email3 address1 address2 address3"]]

for ind,d in enumerate(data):
         data[ind]=[d[0]," ".join([x for x in d[1].split() if "@" not in x])] # add the int first then change elements from  index 1. 
print data

[[1, 'name address'], [2, 'name2 address'], [3, 'name1 name2 name3 email2 email3 address1 address2 address3']]