无法附加到lis

2024-09-30 16:30:15 发布

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

背景: 我有一个文本文件,输入如下:

#1 GLN 15.A OE1
#1 ILE 16.A C
#1 ILE 16.A CA
#1 ILE 16.A CB
#1 ILE 16.A CD1

我用python将这个文件转换成一个字符串。我得到我想要的输出(说数字)。在

代码的一部分在这里:

^{pr2}$

终端中的错误读取

extractnum(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 17, in extractnum
AttributeError: 'NoneType' object has no attribute 'append'

为什么“我”不能添加到列表中?有办法解决这个问题吗?在


Tags: 文件字符串instdinlinecafilecb
3条回答

append不返回值;它直接修改列表。只需键入以下内容即可获得所需效果:

list_of_a_chain_residues.append(i)

请注意:

>>>i = []
>>>print i.append(2)
None

这个append的返回值是None。在

因此,在进行此操作时:

^{pr2}$

您将list_of_a_chain_residues设置为None,因为append不返回值。 请执行以下操作:

list_of_a_chain_residues.append(i)

问题是append to list,它返回None,如果你这样做,你会得到答案

def extractnum(s):
    x = s.readlines()
    x.pop() #To remove last line which is empty
    y = [ i.split() for i in x ]
    z = [ j[2] for j in y ] #z is the list that contains the residue and chain information
    n = [int(k.split('.')[0]) for k in z]
    a_chain_residues = ''
    ca_a_chain_residues = ''
    list_of_a_chain_residues = [ ]
    for i in list(set(z)): #list(set(z)) gives a list that removes all the duplicate items in z: it doesn't change z
        if i[-1] == 'A':
            a_chain_residues = a_chain_residues + i +','
            ca_a_chain_residues = ca_a_chain_residues + i + '.ca,'
            list_of_a_chain_residues = list_of_a_chain_residues + list(i)
        print list_of_a_chain_residues

s = open("./file1.txt",'r')
extractnum(s)

相关问题 更多 >