如何将字符串更改为列表

时间:2019-01-17 01:11:43

标签: python

嗨,我想将字符串更改为类似于以下内容的列表:

'[KEYTYPE.FWPROD2KEY, KEYTYPE.FWPROD2KEY, DOWNLOADMODE.FWTOFW, False, DEPLOYMODE.DEPLOY]'

进入

[KEYTYPE.FWPROD2KEY, KEYTYPE.FWPROD2KEY, DOWNLOADMODE.FWTOFW, False, DEPLOYMODE.DEPLOY]

3 个答案:

答案 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'>