嗨,我想将字符串更改为类似于以下内容的列表:
'[KEYTYPE.FWPROD2KEY, KEYTYPE.FWPROD2KEY, DOWNLOADMODE.FWTOFW, False, DEPLOYMODE.DEPLOY]'
进入
[KEYTYPE.FWPROD2KEY, KEYTYPE.FWPROD2KEY, DOWNLOADMODE.FWTOFW, False, DEPLOYMODE.DEPLOY]
答案 0 :(得分:0)
这是一个简单的函数,使用拆分和替换来处理:
假设“字符串列表”是您的字符串列表...
def transformlist(stringlist):
stringlist = stringlist.split(sep=',')
stringlist[0] = stringlist[0].replace('[','')
stringlist[-1] = stringlist[-1].replace(']','')
return stringlist
答案 1 :(得分:0)
您可以先使用.split(),然后再使用getattr()和ast.literal_eval()
import ast
s = '[KEYTYPE.FWPROD2KEY, KEYTYPE.FWPROD2KEY, DOWNLOADMODE.FWTOFW, False, DEPLOYMODE.DEPLOY]'
def get_val(value):
values = value.split('.')
if values[0] in locals: return getattr(getattr(locals, value), values[1])
if values[0] in globals: return getattr(getattr(globals, value), values[1])
try: return ast.literal_eval(value)
except: return value
#slice the string to get rid of the brackets
#and .replace to remove all spaces
data = [get_val(val) for val in s[1:-1].replace(' ', '').split(',')]
这可能是这样做的安全方法。
答案 2 :(得分:0)
最简洁的方法可能是使用re
模块来拆分和删除字符串中的符号,然后将字符串重新组合成list
数据结构:
import re
s = '[KEYTYPE.FWPROD2KEY, KEYTYPE.FWPROD2KEY, DOWNLOADMODE.FWTOFW, False, DEPLOYMODE.DEPLOY]'
l_str = ''.join(re.split(', [ ]', s))
l = eval(l_str)
或单线:
l = eval(''.join(re.split(', [ ]', s)))
对于Arya's points in the comment,因为我没有定义这些变量,所以我无法对其进行测试,但是您应该能够验证结果为list
类型:
>>> print(type(l))
<type 'list'>