>> ... >>-6ren">
gpt4 book ai didi

python - 将字符串转换为列表列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:06 25 4
gpt4 key购买 nike

使用 Python 2.7,我想将以下格式的字符串转换为列表列表:

>>> value = "[[1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]]"
>>> ...
>>> result = [[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]

我确实设法做到了这一点,但看起来很草率。

>>> value = "[[1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]]"
>>> val2 = value.replace('[[', '').replace(']]', '').split('] [')
>>> val2
['1 0 0 0', '0 1 0 0', '0 0 1 0', '0 0 0 1']
>>> val_final = [[float(x) for x in x] for x in [x.replace(' ', '') for x in val2]]
>>> val_final
[[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]

是否有更好、更简洁、更稳健的方法?

注意:我确实希望字符串中只有整数或浮点值(上下文:它是一个 4x4 矩阵,对应于 3D 环境中的对象位置)。


编辑:替代值可以像这样包含 float :

>>> value = "[[9.231 -0.123 -2 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]]"
>>> ...
>>> result = [[9.231, -0.123, -2.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]

最佳答案

使用json.loads来自标准库,稍作准备(用逗号替换空格)并要求它将所有找到的整数转换为 float :

>>> import json
>>> value = "[[1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]]"
>>> result = json.loads(value.replace(' ', ','), parse_int=float)
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]

这应该比 eval 更安全,比手动解析字符串并将其转换为正确的数据类型更容易,json 解析器将为您完成。

关于python - 将字符串转换为列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com