我有一个列表:
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迭代地计算一个数字。在列表项中遇到引号时,该函数会出错。
答案 0 :(得分:0)
而不是使用
打印列表print(Users)
试
print("Users = [%s]" % ", ".join(Users))
这会对输出进行格式化,使其看起来像你提到的那样。
答案 1 :(得分:0)
您可以使用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:请注意,范围中应存在类定义Protein
,__init__
期望一个字符串变量作为参数,__repr__
函数显示Protein
您需要的格式的对象。例如:
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?了解详细信息。
编辑:根据OP的评论。而不是使用:
users.append('Protein (" ' +dsspSeqList[i]+ ' ", {"id" : "s' +str(i +1)+ ' "}) ')
你应该使用:
users.append(Protein(dsspSeqList[i], {"id" : "s{}".format(i +1)}))
这样您就不需要eval
功能。但 Note 部分仍然适用。