You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将含数据类型值的字符串转为Pandas可用的字典?

解决字符串字典转Pandas可用类型字典的方法

针对你遇到的问题,这里有几个靠谱的解决办法:

方法1:用eval直接转换(适合可控输入场景)

如果你的输入是自己在控制台手动输入的,不存在恶意代码风险,直接用eval()是最省事的:

import pandas as pd

# 假设用户输入的字符串
input_str = '{"Column A": str, "Column B": str}'
converters = eval(input_str)

# 直接用在read_csv里
df = pd.read_csv('your_file.csv', converters=converters)

注意:如果输入来源不可控,别用eval,避免代码注入风险。

方法2:手动解析+映射类型(更安全)

如果担心eval的风险,可以手动拆分字符串,再把类型字符串映射成实际类型:

import pandas as pd

input_str = '{"Column A": str, "Column B": str}'
# 先去掉首尾的引号和大括号,处理成干净的键值对字符串
cleaned = input_str.strip('"{}').replace(' ', '')
# 拆分键值对
kv_pairs = cleaned.split(',')

converters = {}
# 定义允许的类型映射,只保留你需要的类型
allowed_types = {'str': str, 'int': int, 'float': float}

for pair in kv_pairs:
    key, type_name = pair.split(':')
    # 去掉键的引号
    key = key.strip('"')
    if type_name in allowed_types:
        converters[key] = allowed_types[type_name]

# 用在read_csv
df = pd.read_csv('your_file.csv', converters=converters)

这种方法只允许你指定的类型,安全性更高,适合不确定输入来源的场景。

方法3:用globals()动态获取类型(折中方案)

如果你需要支持更多内置类型,又不想手动写映射,可以用globals()来获取,但同样要做类型校验:

import ast
import pandas as pd

input_str = '{"Column A": str, "Column B": str}'
converters = {}

# 先把类型替换成字符串形式,用ast.literal_eval解析
temp_str = input_str.replace('str', '"str"').replace('int', '"int"').replace('float', '"float"')
temp_dict = ast.literal_eval(temp_str.strip('"'))

for key, type_name in temp_dict.items():
    # 只允许内置类型,避免恶意调用
    if type_name in dir(__builtins__):
        converters[key] = globals()[type_name]

df = pd.read_csv('your_file.csv', converters=converters)

这个方法比手动映射灵活,但同样要做校验,只允许内置类型,降低风险。

内容的提问来源于stack exchange,提问作者LCL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:15:10