📜  Python|将异构类型 String 转换为 List

📅  最后修改于: 2022-05-13 01:55:46.328000             🧑  作者: Mango

Python|将异构类型 String 转换为 List

有时,在处理数据时,我们可能会遇到一个问题,我们需要将字符串中的数据转换为列表,而字符串包含来自不同数据类型的元素,如布尔值。此问题可能发生在使用大量数据类型的域中。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用列表理解 + split() + strip()
上述方法的组合可以用来解决这个问题。在此,我们执行元素的拆分,然后去除杂散字符以转换数据类型,并使用列表推导编译列表构造的整个逻辑。

Python3
# Python3 code to demonstrate working of
# Convert String of Heterogeneous types to List
# using list comprehension + split() + strip()
  
# initializing string 
test_str = "'gfg', 'is', True, 'best', False"
  
# printing original string 
print("The original string is : " + test_str)
  
# Convert String of Heterogeneous types to List
# using list comprehension + split() + strip()
res = [ele.strip() if ele.strip().startswith("'") else ele == 'True'
      for ele in test_str.split(', ')]
  
# printing result
print("List after conversion from string : " + str(res))


Python3
# Python3 code to demonstrate working of
# Convert String of Heterogeneous types to List
# using eval()
  
# initializing string 
test_str = "'gfg', 'is', True, 'best', False, 1, 2"
  
# printing original string 
print("The original string is : " + test_str)
  
# Convert String of Heterogeneous types to List
# using eval()
res = list(eval(test_str))
  
# printing result
print("List after conversion from string : " + str(res))


输出 :
The original string is : 'gfg', 'is', True, 'best', False
List after conversion from string : ["'gfg'", "'is'", True, "'best'", False]

方法 #2:使用 eval()
这个内置函数会自动检测数据类型并执行转换。它是单短语解决方案,即使整数在字符串中也提供解决方案,因此推荐用于此解决方案。

Python3

# Python3 code to demonstrate working of
# Convert String of Heterogeneous types to List
# using eval()
  
# initializing string 
test_str = "'gfg', 'is', True, 'best', False, 1, 2"
  
# printing original string 
print("The original string is : " + test_str)
  
# Convert String of Heterogeneous types to List
# using eval()
res = list(eval(test_str))
  
# printing result
print("List after conversion from string : " + str(res))
输出 :
The original string is : 'gfg', 'is', True, 'best', False, 1, 2
List after conversion from string : ["'gfg'", "'is'", True, "'best'", False, 1, 2]