在python中删除元组中的项

2024-06-16 11:12:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这种格式的文件

[('misure', 'di', 'protezione'), ('libertà', 'di', 'espressione', 'di', 'popolo')]

我想要的是从元组中消除介词(di),并以相同的格式返回结果。所以我创建了这个函数

^{pr2}$

但它以这种格式返回元组

[('misure', '', 'protezione'), ('libertà', '', 'espressione', '', 'popolo')]

需要的输出是

[('misure', 'protezione'), ('libertà', 'espressione', 'popolo')] ### without ''

Tags: 文件函数格式without元组dipopolopr2
3条回答

可以使用ast.literal_eval将字符串转换为元组列表

>>> from ast import literal_eval
>>> l = literal_eval("[('misure', 'di', 'protezione'), ('libertà', 'di', 'espressione')]")

然后进行列表理解,从第一个和最后一个元素生成新的元组

^{pr2}$

然后str从元组列表中创建一个字符串

^{3}$

编辑
如果您想删除字符串'di'的所有实例,这是相同的想法,您可以使用列表理解

>>> [tuple(i for i in j if i != 'di') for j in l]
[('misure', 'protezione'), ('libertà', 'espressione', 'popolo')]

编辑2
更一般地说,如果你有一个介词要排除

>>> prepositions = {'di', 'a', 'al'}
>>> [tuple(i for i in j if i not in prepositions) for j in l]
[('misure', 'protezione'), ('libertà', 'espressione', 'popolo')]

元组是不可变的,因此一旦创建就不能更改它们。你可以创造新的。试试这个:

[tuple(j for j in i if 'di' not in j) for i in a]

Here是工作演示。在

[tuple(j for j in i if 'di' != j) for i in li]

我修改了sam2090代码,因为字符串“di”可以是单词“dim”的一部分

相关问题 更多 >