Python 避免";cursor.fetchall中的十进制(';值';)

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

在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
)的原因是我试图使用
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')`您尝试过吗?