首页 > 解决方案 > str-tuple 列表 & 在 for 循环中将 str-tuple 转换为元组

问题描述

我如何获取这样的 str 元组列表,['(1, 2, 3)', '(4, 5, 6)']我想通过 for 循环运行它并摆脱它周围的字符串,所以第一个将是 (1, 2, 3),第二个将是 (4,5, 6 )。

本质上,'(1, 2, 3)' 转换为 (1, 2, 3) 而不导入任何类型的模块。

标签: pythonpython-3.x

解决方案


您可以literal_evalast标准库中使用:

from ast import literal_eval

values = ['(1, 2, 3)', '(4, 5, 6)']
result = [literal_eval(v) for v in values]
print(result)  # [(1, 2, 3), (4, 5, 6)]

更经典的方式可能是

result = []
for value in values:
    parsed_v = value.strip("()").replace(' ', '').split(",")
    result.append(tuple(int(p) for p in parsed_v))
print(result)  # [(1, 2, 3), (4, 5, 6)]


# expand it
result = []
for value in values:
    parsed_v = value.strip("()").replace(' ', '').split(",")
    tmp = list()
    for p in parsed_v:
        tmp.append(int(p))
    result.append(tuple(tmp))
print(result)  # [(1, 2, 3), (4, 5, 6)]

推荐阅读