在 Python 中将字符串解析为列表

使用 Python 中的 str.split() 函数将字符串解析为列表

如果在某个场景中,我们有一个列表的字符串表示形式,如 '[ "A","B","C" , " D"]' 并且想要将该表示形式转换为实际的字符串列表,我们可以使用 str.split() 函数根据每个 , 拆分字符串。str.split() 函数将分隔符/分隔符作为输入参数,根据分隔符拆分调用字符串,并返回子字符串列表。下面的代码示例向我们展示了如何使用 str.split() 函数将列表的字符串表示解析为实际列表。

stringlist = '[ "A","B","C" , " D"]'
print(stringlist.split(","))

输出:

['[ "A"', '"B"', '"C" ', ' " D"]']

我们通过基于 , 和 stringlist.split(",") 函数将 stringlist 字符串拆分为一个列表。从输出中可以明显看出,这种方法有几个问题,不能很好地满足我们的要求。

使用 Python 中的 str.strip() 函数将字符串解析为列表

要将这样的字符串进一步转换为列表,我们可以使用 str.strip() 函数。这个 str.strip() 函数也将分隔符/分隔符作为输入参数,根据分隔符去除调用字符串,并返回一个更清晰的子字符串列表。下面的示例代码向我们展示了如何使用 str.strip() 函数将列表的字符串表示解析为实际列表。

stringlist = '[ "A","B","C" , " D"]'
print(stringlist.strip(","))

输出:

[ "A","B","C" , " D"]

我们通过在 , 的基础上使用 stringlist.split(",") 函数将 stringlist 字符串拆分为一个列表。这次我们得到了一个更清晰的字符串列表。这种方法的唯一缺点是有一些不需要的空格,例如列表第四个元素中的空格。

使用 Python 中的 json.loads() 函数将字符串解析为列表

我们还可以针对我们的特定问题使用 json 模块。json.loads() 函数 接受一个 JSON 对象作为参数,反序列化 JSON 对象,并在列表中返回结果。在这种情况下,JSON 对象参数也可以是字符串。下面的示例代码向我们展示了如何使用 json.loads() 函数将列表的字符串表示解析为实际列表。

import json
stringlist = '[ "A","B","C" , " D"]'
print(json.loads(stringlist))

输出:

['A', 'B', 'C', ' D']

我们使用 Python 中的 json.loads(stringlist) 函数将 stringlist 字符串转换为更清晰的列表。json.loads() 函数和我们之前的方法之间的唯一区别是我们不必在此处指定任何分隔符或分隔符。json.loads() 函数会自动为我们确定分隔符。这种方法还包含不需要空格的问题。

使用 Python 中的 ast.literal_eval() 函数将字符串解析为列表

解决我们特定问题的另一种方法是 ast 模块。ast.literal_eval() 函数采用 Python 文字结构的字符串表示形式,如元组、字典、列表和集合。如果我们将字符串传递到该文字结构中,它会返回结果。在我们的例子中,我们有一个列表的字符串表示。因此,ast.literal_eval() 函数接受这个字符串,将其解析为一个列表,并返回结果。以下代码片段向我们展示了如何使用 ast.literal_eval() 函数将列表的字符串表示解析为实际列表。

import ast
stringlist = '[ "A","B","C" , " D"]'
print(ast.literal_eval(stringlist))

输出:

['A', 'B', 'C', ' D']

我们使用 Python 中的 ast.literal_eval() 函数将 stringlist 字符串转换为更清晰的列表。与前面的方法类似,我们不必指定定界符或分隔符。也与前面的方法类似,这种方法也有不想要的空格的问题。但是这些空格可以很容易地去除。