python - 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) 而不导入任何类型的模块。
解决方案
您可以literal_eval
从ast
标准库中使用:
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)]
推荐阅读
- java - Android/Java:为什么我的 ConstraintLayout 泄漏?
- azure-devops - Azure DevOps 发布管道的动态变量组
- html - XSLT - HTML 转换中的多个模板
- django - 从 axios 获取 DRF 分页端点
- python - 是否可以使用 groovy 脚本从文本文件中读取 python 函数输出?
- powershell - 如何创建日志文件(时间、运行脚本的用户以及脚本完成后发生的情况)
- java - 我无法使用 Xoup 在 java 中通过 xpath 创建元素
- python - 用分隔符分割一串十六进制值
- objective-c - 如何在目标 c 的核心数据中使用 select 和 where 条件
- excel - 最后一个数字匹配不显示所有值