Python 将字符串转换为带变量的列表

Python 将字符串转换为带变量的列表,python,string,list,replace,Python,String,List,Replace,我正在尝试将字符串转换为列表 stringvalue = '[54.0, country, state]' 我遇到了很多答案,但是所有的答案字符串都有这样的引号 [54.0, 'country', 'state'] [54.0, country, state] 所以我的想法是我想要一份这样的清单 [54.0, 'country', 'state'] [54.0, country, state] 基本上,国家和州是变量,将在计划中得到解决 环顾四周之后,我发现了一个答案,它使用以下命令删

我正在尝试将字符串转换为列表

stringvalue = '[54.0, country, state]'
我遇到了很多答案,但是所有的答案字符串都有这样的引号

[54.0, 'country', 'state']
[54.0, country, state]
所以我的想法是我想要一份这样的清单

[54.0, 'country', 'state']
[54.0, country, state]
基本上,国家和州是变量,将在计划中得到解决

环顾四周之后,我发现了一个答案,它使用以下命令删除了字符串周围的引号(')

class MyStr(str):
    """ Special string subclass to override the default representation method
        which puts single quotes around the result.
    """
    def __repr__(self):
        return super(MyStr, self).__repr__().strip("'")

MyStr(stringvalue)
这导致输出看起来像列表(不带引号)

但是类型是
\uuuu main\uuuuu.MyStr
——没有列出我正在查找的内容

有什么想法吗?

试试这个

mystr = 'random'
mylist = []
for char in mystr:
    mylist += char

print(mylist)

从提取字段开始:

import re
fields = re.findall(r"(?:([^,\s]+)\s*,?\s*)+?", stringvalue[1:-1])
#['54.0', 'country', 'state']
获取对局部变量字典的引用:

country = 'USA'
state = 'MA'
variables = vars()
在字典中查找字段。如果它们在那里,获取它们的值。如果不是,则将其视为数字:

[variables[x] if x in variables else float(x) for x in fields]
#[54.0, 'USA', 'MA']

您知道国家和州变量的值吗?
eval(stringvalue)
只要已经定义了
country
state
,或者
eval(stringvalue,locals=dict(country='US',state='GA')就可以工作
所以
country
state
是占位符——那么您需要一个简单的子字符串替换,或者您需要为您的迷你表达式语言编写一个迷你解析器,它可以计算像这样的自定义关键字。@deceze是的,国家和州就像占位符。@martineau对不起,您完全正确。我应该说:
eval(stringvalue,{},dict(country='US',state='GA'))
。看见我一直不明白为什么有些函数显然应该有关键字参数,却没有关键字参数。欢迎来到堆栈溢出!在堆栈溢出问题上,最好添加一个解释,说明解决方案应该工作的原因。欲了解更多信息,请阅读。