解析表示元组列表的字符串

18 投票
6 回答
11617 浏览
提问于 2025-04-15 16:27

我有一些字符串,像这样:

"(8, 12.25), (13, 15), (16.75, 18.5)"

我想把它们转换成Python的数据结构。最好是一个包含一对浮点数值的元组列表(或元组)。

我可以用 eval("(8, 12.25), (13, 15), (16.75, 18.5)") 来实现,这样可以得到一个元组的元组,但我觉得直接执行外部信息不是个明智的选择。

所以我在想,有没有什么优雅的Python解决方案呢。

6 个回答

2

我以前在做类似的工作时用过 safe_eval

4
def parse(s):
    tuples = s.split('), ')
    out = []
    for x in tuples:
        a,b = x.strip('()').split(', ')
        out.append((float(a),float(b)))
    return out

这段代码应该能解决问题。

27

在编程中,有时候我们需要处理一些数据,这些数据可能是从用户那里输入的,或者是从其他地方获取的。为了让程序能够理解这些数据,我们需要把它们转换成程序可以使用的格式。

比如说,如果你有一个数字的字符串(像“123”),但程序需要的是一个真正的数字(123),那么你就需要把这个字符串转换成数字。这种转换的过程叫做“类型转换”。

在不同的编程语言中,类型转换的方法可能会有所不同。有些语言会自动帮你转换,有些则需要你手动去做。

总之,理解数据的类型和如何进行转换是编程中非常重要的一部分,特别是当你在处理用户输入或者从外部获取数据时。

>>> import ast
>>> print ast.literal_eval("(8, 12.25), (13, 15), (16.75, 18.5)")
((8, 12.25), (13, 15), (16.75, 18.5))

撰写回答