我有一个字符串:
my_string = "'T1', 'T2', 'T3', 'T4', True, False"
我想转换成这样的列表
my_list = ['T1', 'T2', 'T3', True, False]
我尝试做my_string.split(', ')
,但是它将True
和False
转换成str
,这是我不想要的。
我可以编写一个函数,但是我觉得有些东西是pythonic的,很容易做到。
什么是最好的方法?
答案 0 :(得分:1)
您可以使用ast.literal_eval
至turn a string representation of a list into a list。要使字符串表示列表,您需要添加左括号和右括号。
from ast import literal_eval
my_string = "'T1', 'T2', 'T3', 'T4', True, False"
my_list = literal_eval("[" + my_string + "]")
print(my_list)
#['T1', 'T2', 'T3', 'T4', True, False]
您可以看到最后两个元素的类型为bool
:
print([type(x) for x in my_list])
#[str, str, str, str, bool, bool]
更新
@Chris_Rands提出的更整洁的解决方案
my_list = list(literal_eval(my_string))
答案 1 :(得分:0)
一种快速的方法是使用列表理解:
[
value.strip() if value.strip().startswith("'") else value == 'True'
for value in string.split(',')
]
保险杠的答案看起来更好:)
答案 2 :(得分:0)
因此,您真正要解决的问题实际上已经解决了一半,您现在要做的就是遍历列表并将字符串“ True”转换为布尔True。下面是完整的解决方案:
405 Not Allowed Error
执行此操作的方法更紧凑,更优雅,但是我将其简化了,因此易于理解。 i后面的.upper表示您键入True或TRue或TrUe或TRUE等的任何方式都将转换为布尔True,而其他两种解决方案则不会。
希望这会有所帮助。