Python 如何将此列表中的字符串转换为十进制?
我正在尝试将列表列表中的字符串转换为十进制形式:Python 如何将此列表中的字符串转换为十进制?,python,list,decimal,string-conversion,Python,List,Decimal,String Conversion,我正在尝试将列表列表中的字符串转换为十进制形式: ask=[[31188.28758860',2],[31183.48445986',0.14258435],…] 我尝试在ask中为elem使用elem.strip('“')来删除引号,但得到“AttributeError:'list'对象没有属性'strip'”,因此我假设我没有访问字符串的嵌套级别尝试以下操作: ans = [[float(i) if type(i)==str else i for i in j] for j in ask]
ask=[[31188.28758860',2],[31183.48445986',0.14258435],…]
我尝试在ask中为elem使用elem.strip('“')来删除引号,但得到“AttributeError:'list'对象没有属性'strip'”,因此我假设我没有访问字符串的嵌套级别尝试以下操作:
ans = [[float(i) if type(i)==str else i for i in j] for j in ask]
print(ans)
输出
只获取嵌套列表的第一个值
或
获得与以前相同的结构,但字符串替换为浮点数
ask = [['31188.28758860', 2], ['31183.48445986', 0.14258435]]
ask_list = [[float(j) for j in i] for i in ask]
这将完成您的工作。输出(询问列表)将是[[31188.2875886,2.0],[31183.48445986,0.14258435]]
您期望的输出是什么?当您在ask
中对elem执行操作时,elem
是一个列表,使用列表上的条带将显示错误。elem
是一个列表,而不是字符串。要获取字符串,您需要elem[0]
。但您不能通过“删除引号”将字符串转换为浮点“。您看到的是字符串的源代码表示形式。内存中没有引号。相反,有一个复杂的数据结构,表示它是一个长度为13的字符串。在内部,浮点看起来更不像它的源代码表示形式。使用对“float()”的调用转换字符串,而不是试图操纵外部性。虽然这段代码可能会回答这个问题,但通过解释代码解决问题的原因和方式,您将为OP和未来的读者提供更多帮助
ask = [['31188.28758860', 2], ['31183.48445986', 0.14258435], ...]
converted_ask = [[float(x[0]), x[1]] for x in ask]
[float(elem[0]) for elem in ask]
[[float(elem[0]), elem[1]] for elem in ask]
ask = [['31188.28758860', 2], ['31183.48445986', 0.14258435]]
ask_list = [[float(j) for j in i] for i in ask]