Python で文字列をパースしてリストにする

Muhammad Maisam Abbas 2023年1月30日
  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 文字列をリストに変換しました。今回は、はるかにクリーンな文字列のリストを取得します。このアプローチの唯一の欠点は、リストの 4 番目の要素のスペースのような不要な空白スペースがあることです。

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() 関数を使用して文字列を解析してリストする

特定の問題を解決するもう 1つの方法は、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