Python中如何将元组字符串转换为浮点型元组列表?
解决方案:字符串坐标转浮点型元组列表
嘿,这个转换需求很常见,我给你两种靠谱的解决方案,你可以根据自己的场景选择:
方法一:手动字符串解析
这种方法不需要依赖额外模块,适合格式固定的简单场景:
d = {'col1': '(100,200),(150,124),(135,137)'} # 提取目标字符串 raw_str = d['col1'] # 去除首尾括号后,分割成单个坐标的字符串 coord_strings = raw_str.strip('()').split('),(') # 逐个转换为浮点型元组并收集 result_list = [] for coord in coord_strings: x_str, y_str = coord.split(',') result_list.append((float(x_str), float(y_str))) # 更新原字典 d['col1'] = result_list print(d) # 输出:{'col1': [(100.0, 200.0), (150.0, 124.0), (135.0, 137.0)]}
注意:如果你的原始数据里有空格(比如(100, 200)),可以在分割前先去掉所有空格:raw_str = raw_str.replace(' ', ''),避免分割出错。
方法二:使用ast.literal_eval(更安全灵活)
如果字符串格式可能有变化(比如带空格、混合整数小数),用Python的ast模块会更稳妥,而且比直接用eval安全(不会执行恶意代码):
import ast d = {'col1': '(100,200),(150,124),(135,137)'} # 把原始字符串包装成列表格式的字符串 formatted_str = f"[{d['col1']}]" # 解析成Python原生的元组列表 parsed_list = ast.literal_eval(formatted_str) # 转换为浮点型(如果需要保留整数,换成int即可) result_list = [(float(x), float(y)) for x, y in parsed_list] d['col1'] = result_list print(d) # 输出:{'col1': [(100.0, 200.0), (150.0, 124.0), (135.0, 137.0)]}
这个方法的优势是能自动处理各种合法的格式细节,比如坐标间的空格、不同的数字类型,容错性更强。
内容的提问来源于stack exchange,提问作者NZ_DJ
相关产品推荐
相关产品推荐

