在 Python 中將字串解析為列表

Muhammad Maisam Abbas 2023年1月30日 2022年5月17日
  1. 使用 Python 中的 str.split() 函式將字串解析為列表
  2. 使用 Python 中的 str.strip() 函式將字串解析為列表
  3. 使用 Python 中的 json.loads() 函式將字串解析為列表
  4. 使用 Python 中的 ast.literal_eval() 函式將字串解析為列表
在 Python 中將字串解析為列表

在本教程中,我們將學習在 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 字串轉換為更清晰的列表。與前面的方法類似,我們不必指定定界符或分隔符。也與前面的方法類似,這種方法也有不想要的空格的問題。但是這些空格可以很容易地去除。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相關文章 - Python String

相關文章 - Python List