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

2024-10-01 17:27:24 发布

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

我有一个清单,比如:

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

我想要同一份清单:

^{pr2}$

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


Tags: 字符串id列表s3数字users引号s2
2条回答

而不是用

print(Users)

试试看

^{pr2}$

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

您可以使用下面的列表理解,使用mapeval(...)作为:

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将保存值:

^{pr2}$

PS:注意,在作用域中应该存在一个类定义Protein,它的__init__需要一个字符串变量作为参数,__repr__函数以您需要的格式显示{}的对象。例如:

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

    def __repr__(self):
        return 'Protein("%s")' % self.x

注意:在Python代码中使用eval不是一个好的实践。您不应该将其用于实时应用程序,但是在家庭工作中使用它是可以的(如果是这样的话)。查看:Why is using 'eval' a bad practice?了解详细信息。在

编辑:根据操作员的评论,而不是使用:

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

您应该使用:

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

这样就不需要eval函数。但部分仍然适用。在

相关问题 更多 >

    热门问题