【问题标题】:Python:Split string to a list [duplicate]Python:将字符串拆分为列表[重复]
【发布时间】:2018-04-26 20:12:38
【问题描述】:

我有一个用逗号(,)分隔的字符串,其中包含列表、整数、布尔值和字符串。如何将其转换为列表。 例如,

s= "[{'Name':'key','Values':['data']}],6,True,'somestring'"

我想在 Python(3.5v) 中将其转换为如下列表

[[{'Name':'key','Values':['data']}],6,True,'somestring']

这里的问题是,当我尝试根据逗号拆分它时,列表中的项目会被拆分。请帮忙。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    使用ast.literal_eval:

    import ast
    s= "[{'Name':'key','Values':['data']}],6,True,'somestring'"
    print(list(ast.literal_eval(s)))
    
    # [[{'Name': 'key', 'Values': ['data']}], 6, True, 'somestring']
    

    【讨论】:

    • 如果只有一个整数或布尔值作为输入,则会抛出错误>>> s= "6" >>> b=list(ast.literal_eval(s)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not iterable >>>>>> s="True" >>> b=list(ast.literal_eval(s)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'bool' object is not iterable >>>
    • 还有单字符串:>>> s="somerolename" >>> ast.literal_eval(s) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python 3.5.4\lib\ast.py", line 84, in literal_eval return _convert(node_or_string) File "C:\Python 3.5.4\lib\ast.py", line 83, in _convert raise ValueError('malformed node or string: ' + repr(node)) ValueError: malformed node or string: <_ast.Name object at 0x01065CD0>
    【解决方案2】:

    您可以使用ast 模块中的literal_eval 方法

    s="[{'Name':'key','Values':['data']}],6,True,'somestring'"
    list(ast.literal_eval(s))
    

    输出

    [[{'Name': 'key', 'Values': ['data']}], 6, True, 'somestring']
    

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 2012-03-31
      • 2015-08-01
      • 2018-04-22
      • 2014-05-17
      相关资源
      最近更新 更多