我遇到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-19-ec485c9b9711> in <module>
31 except Exception as e:
32 print(e)
---> 33 raise e
34 print(i)
35 i = i+1
<ipython-input-19-ec485c9b9711> in <module>
21 # cc = dict(x.split(':') for x in c.split(','))
22 c = '"'.join(c)
---> 23 cc = dict(x.split(':') for x in c.split(','))
24 df_temp = pd.DataFrame(cc.items())
25 df_temp = df_temp.replace('"','',regex=True)
ValueError: dictionary update sequence element #13 has length 1; 2 is required
下面是引发错误的块。我在这里签出了一些帖子,但是它们是特定于代码的。不确定是输入问题还是代码。
df_final = pd.DataFrame()
i=1
for file in files:
try:
s3 = session.resource('s3')
key = file
obj = s3.Object('my-bucket',key)
n = obj.get()['Body'].read()
gzipfile = BytesIO(n)
gzipfile = gzip.GzipFile(fileobj=gzipfile)
content = gzipfile.read()
content = content.decode('utf-8')
if len(content) > 0:
content = re.findall(r"(?<=\{)(.*?)(?=\})",content)
for c in content:
c= c.split('"')
for index,val in enumerate(c):
if index%2 == 1:
c[index] = val.replace(':','_').replace(',','_')
c = '"'.join(c)
cc = dict(x.split(':') for x in c.split(','))
df_temp = pd.DataFrame(cc.items())
df_temp = df_temp.replace('"','',regex=True)
df_temp = df_temp.T
new_header = df_temp.iloc[0] #grab the first row for the header
df_temp = df_temp[1:] #take the data less the header row
df_temp.columns = new_header
df_final = pd.concat([df_final, df_temp])
except Exception as e:
print(e)
raise e
print(i)
i = i+1
您可以分享这里的问题吗?以前可以正常工作。我要更改还是忽略该错误?
答案 0 :(得分:0)
我的猜测是您的数据格式不正确。我猜想在某个时候,x.split(':')
会生成一个仅包含一个元素的列表,因为:
中没有x
,该字符串被拆分了。这样,在根据这些数据创建字典的过程中,当期望有一对值(“键”和“值”)时,将传递一个值。
我建议您启动调试器,或者在遇到此错误时让调试器停止运行,或者找出发生的时间并达到可能发生错误的地步。然后在调试器显示中查看正在或将要处理的数据,看看是否可以找到导致问题的格式错误的数据。在运行引发异常的行之前,您可能必须对数据进行预处理才能解决此问题和其他类似问题。