datas = [] for a in result: data = [] for i in keyword: data.append("") if a[0] == '{}': datas.append(data) continue else: a = a[0] a = ast.literal_eval(a) a = a['企业触发词'][0] keyvalues = a['text'] f = "" try: relations = a['relations'] # print(relations) for ii in relations: # print(ii) f = ii # break relations = a['relations'][f] cc = keyword.index(f) str = '' for i in relations: # print(i['text']) str = str +'、'+ i['text'] data[cc] =str[1:] #print(data[cc]) data[0] = keyvalues datas.append(data) #print(datas) #data[0] = keyvalues # print() except: datas.append("") pass
时间: 2024-02-10 20:27:40 浏览: 24
根据你提供的代码,我注意到你正在迭代`result`和`keyword`列表,并根据某些条件对`data`进行填充。然后,将填充后的`data`添加到`datas`列表中。
根据你提供的错误信息,`ValueError: Shape of passed values is (61980, 1), indices imply (61980, 6)`,问题可能出现在你尝试将`data`添加到`datas`列表时。
根据你的代码,每个循环迭代都会生成一个新的`data`列表,并将其添加到`datas`中。但是,在某些情况下,你可能没有为`data`赋值,而只是添加了一个空字符串。这可能导致`data`在某些迭代中的形状与其他迭代中的形状不匹配。
为了解决这个问题,你可以在每次迭代开始时创建一个新的空的`data`列表,并在需要填充数据时将其赋值。如果没有数据可填充,则可以添加一个空列表。这样可以确保在每次迭代中,`data`的形状保持一致。
以下是修改后的代码示例:
```python
datas = []
for a in result:
data = []
for i in keyword:
data.append("") # 创建一个空的data列表
if a[0] == '{}':
datas.append(data)
continue
else:
a = a[0]
a = ast.literal_eval(a)
a = a['企业触发词'][0]
keyvalues = a['text']
f = ""
try:
relations = a['relations']
for ii in relations:
f = ii
relations = a['relations'][f]
cc = keyword.index(f)
str = ''
for i in relations:
str = str + '、' + i['text']
data[cc] = str[1:]
data[0] = keyvalues
datas.append(data)
except:
datas.append([]) # 添加一个空列表
pass
```
请注意,这只是对你提供的代码的修改示例,具体取决于你的需求和数据结构。确保在每次迭代中,`data`的形状保持一致,并将正确的数据添加到`data`中。