Python 从列表项中删除引号,而不使其成为字符串

Python 从列表项中删除引号,而不使其成为字符串,python,list,Python,List,我有这样一个清单: Users = ['Protein("SAHDSJDSFJH"), {"id": "s1"}', 'Protein("ACGTWZJSFNM"), {"id": "s2"}', 'Protein("ABHZZEQTAAB"), {"id": "s3"}'] 我想要与以下内容相同的列表: Users = [Protein("SAHDSJDSFJH"), {"id": "s1"}, Protein("ACGTWZJSFNM"

我有这样一个清单:

Users = ['Protein("SAHDSJDSFJH"), {"id": "s1"}',
         'Protein("ACGTWZJSFNM"), {"id": "s2"}',
         'Protein("ABHZZEQTAAB"), {"id": "s3"}']
我想要与以下内容相同的列表:

Users = [Protein("SAHDSJDSFJH"), {"id": "s1"},
         Protein("ACGTWZJSFNM"), {"id": "s2"},
         Protein("ABHZZEQTAAB"), {"id": "s3"}]

在不将第二个列表作为字符串的情况下,我只希望从列表项中删除单引号。因为,我将它解析为python中的一个库,以使用ID迭代计算一个数字。函数在列表项中遇到引号时出错

而不是使用

print(Users)
试一试

这将格式化输出,使其看起来像您提到的那样。

您可以使用以下列表,使用
map
eval(…)
作为:

import ast

Users = ['Protein("SAHDSJDSFJH"), {"id": "s1"}',
         'Protein("ACGTWZJSFNM"), {"id": "s2"}',
         'Protein("ABHZZEQTAAB"), {"id": "s3"}']

new_list = [y for x in map(eval, Users) for y in x]
其中
new_list
将保存以下值:

[Protein("SAHDSJDSFJH"), {'id': 's1'}, 
 Protein("ACGTWZJSFNM"), {'id': 's2'}, 
 Protein("ABHZZEQTAAB"), {'id': 's3'}]
PS:请注意,在其
\uuuu init\uuuuuu
需要一个字符串变量作为参数的作用域中,应该存在一个类定义
Protein
,并且
\uuuu repr\uuuuu
函数以您需要的格式显示
Protein
的对象。例如:

class Protein:
    def __init__(self, x):
        self.x = x

    def __repr__(self):
        return 'Protein("%s")' % self.x
注意:在Python代码中使用
eval
不是一种好的做法。您不应该在实时应用程序中使用它,但是在家庭工作中使用它是可以的(如果是这样的话)。请看:了解详细信息

根据OP的评论编辑:。而不是使用:

users.append('Protein (" ' +dsspSeqList[i]+ ' ", {"id" : "s' +str(i +1)+ ' "}) ')
您应该使用:

users.append(Protein(dsspSeqList[i], {"id" : "s{}".format(i +1)}))

这样,您就不需要
eval
函数。但请注意,部分仍然适用。

如果您打印这些,您将看不到引号,它们已经是字符串了。引号只是用来表示它们的类型;它们只是用来将已经在引号中的内容括起来。可能重复您如何使用列表,以及为什么它的成员是否显示为引号(表示字符串文字)相关?在我看来,这就像一个字符串。@Chris我已经编辑了这个问题,这使得它是一个字符串。。。OP问了一个毫无意义的问题,这使它成为一个字符串。我希望它仍然是一个列表。@shalini如果你想让它成为一个列表,那么你的问题就没有意义了。引号只是显示python认为列表包含的数据类型。删除引号的唯一方法是显示列表的内容。我不相信
ast.literal\u eval
会理解
蛋白质(…)
。@Chris:是的。我们应该在这里使用
eval
。更新了答案。谢谢请注意,
eval()
通常不是一个安全的函数。如果有任何方法来修正输入值,它将比这个解决方案更好。是的,这是真的谢谢@这解决了我的问题。耶耶
users.append(Protein(dsspSeqList[i], {"id" : "s{}".format(i +1)}))