我正在尝试运行此代码,我使用正则表达式和dict()。我需要将匹配元素放入正确的列表中,但是我得到了error.TypeError:'list'对象不可调用。谁能告诉我这里我做错了什么。
dir='newDSSP'
for tname in os.listdir(dir):
file=dir+os.sep+tname
ndfile=open(file)
tname=dict()
tname.setdefault('A',[[],[]])
tname.setdefault('B',[[],[]])
tname.setdefault('C',[[],[]])
tname.setdefault('D',[[],[]])
for ndline in ndfile:
t=re.match(r'(\s+|\S+)+\t\w+\t(\w)\t(\w)\t(\w|\s)', ndline)
k=t.group(2)
if k =='A':
tname['A'](0).append(t.group(3))<--- **#Error here**
tname['A'](1).append(t.group(4))
elif k =='B':
tname['B'](0).append(t.group(3))
tname['B'](1).append(t.group(4))
elif k =='C':
tname['C'](0).append(t.group(3))
tname['C'](1).append(t.group(4))
elif k =='D':
tname['D'](0).append(t.group(3))
tname['D'](1).append(t.group(4))
ndfile.close()
答案 0 :(得分:8)
你有
tname['A'](0).append(t.group(3))
但不是tname['A']
包含两个列表的列表?在这种情况下,你想要
tname['A'][0].append(t.group(3))
答案 1 :(得分:1)
x()
始终是函数调用,因此像tname['C'](0)
这样的函数会尝试将tname['C']
作为带参数0
的函数调用。也许您打算使用方括号作为列表索引?