Python 避免";cursor.fetchall中的十进制(';值';)
在Python脚本中,Python 避免";cursor.fetchall中的十进制(';值';),python,json,list,psycopg2,Python,Json,List,Psycopg2,在Python脚本中,cursor.fetchall命令返回一个元组列表,其中一些元素被标记为例如Decimal('0.50'),而不仅仅是0.50 myList= [(1, 'string1', None, None, 'string2', 0, 'string3'), (1, 'string1', Decimal('0.50'), Decimal('2.5'), 'string2', 3, 'string3')] 我想要后一种形式(即仅0.50)的原因是我试图使用p
cursor.fetchall
命令返回一个元组列表,其中一些元素被标记为例如Decimal('0.50')
,而不仅仅是0.50
myList= [(1, 'string1', None, None, 'string2', 0, 'string3'),
(1, 'string1', Decimal('0.50'), Decimal('2.5'), 'string2', 3, 'string3')]
我想要后一种形式(即仅0.50
)的原因是我试图使用print(json.dumps(result))
发送列表,它当前返回TypeError:Decimal('0.50')不是json可序列化的
有没有直接的方法去除这些“类型”信息?我在这个问题上一直没有取得成功,我发现以前的相关问题只涉及所有元素类型相同的情况(例如)。谢谢你的提示 以下是我克服这个问题的方法
首先,我将查询结果转换为数据帧:
df = pd.DataFrame(query_data)
然后,我简单地将麻烦的列转换为字符串:
df[2] = [str(r) for r in df[2]]
最后,我将数据帧转换为csv字符串:
df_csv = df.to_csv(sep=',', index = False, header = False)
在打印(json.dumps(result))
中使用时不会出现错误
非常具体的解决方法,但我认为无论如何我都会发布它,以提供至少一个问题的答案。这不是“类型信息”,一个十进制对象不同于int
或`float,它是它自己的类代码>十进制。十进制<代码>。您可能只需执行
float(十进制('0.05')`您尝试过吗?