Python将字符串和布尔字符串转换为列表

时间:2019-06-05 20:35:37

标签: python string list boolean

我有一个字符串:

my_string = "'T1', 'T2', 'T3', 'T4', True, False"

我想转换成这样的列表

my_list = ['T1', 'T2', 'T3', True, False]

我尝试做my_string.split(', '),但是它将TrueFalse转换成str,这是我不想要的。

我可以编写一个函数,但是我觉得有些东西是pythonic的,很容易做到。

什么是最好的方法?

3 个答案:

答案 0 :(得分:1)

您可以使用ast.literal_evalturn 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,而其他两种解决方案则不会。

希望这会有所帮助。