Pythonの文字列のリストから数値を抽出する
データ操作にPythonを使用しているときに、要素が固定パターンの文字と数字の組み合わせであるリストに出くわす場合があります。この記事では、将来の計算に使用できる文字から数字を分離する方法を説明します。
分割あり
分割関数は、区切り文字として扱われる文字を使用して文字列を分割します。以下のプログラムでは、リスト要素の文字とテキストの間の区切り文字としてハイフンが使用されています。これをforループと一緒に使用して、それぞれをキャプチャします
例
listA = ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] # Given list print("Given list : " + str(listA)) # Extracting numbers num_list = [int(i.split('-')[1]) for i in listA] # print result print("List only with numbers : ",num_list)
出力
上記のコードを実行すると、次の結果が得られます-
Given list : ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] List only with numbers : [2, 8, 2, 7]
地図とisnumeric付き
このアプローチでは、各要素を調べて、各要素に存在する数値部分を確認します。マップ関数は、各要素に同じ関数を繰り返し適用するために使用されます。
例
listA = ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] # Given list print("Given list : " + str(listA)) # Extracting numbers num_list = list(map(lambda sub:int(''.join( [i for i in sub if i.isnumeric()])), listA)) # print result print("List only with numbers : ",num_list)
出力
上記のコードを実行すると、次の結果が得られます-
Given list : ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] List only with numbers : [2, 8, 2, 7]
-
Pythonで文字列のリストを並べ替える方法は?
リストを適切に並べ替える、つまりリスト自体を並べ替え、そのリスト自体の順序を変更するには、文字列のリストでsort()を使用できます。たとえば、 >>> a = ["Hello", "My", "Followers"] >>> a.sort() >>> print a ['Followers', 'Hello', 'My'] 元のリストをそのまま維持し、代わりにソートされた要素の新しいリストが必要な場合は、sorted(list)を
-
Pythonで文字列から数字を抽出する方法は?
正の整数のみが必要な場合は、次のように分割して数値を検索できます。 >>> str = "h3110 23 cat 444.4 rabbit 11 2 dog" >>> [int(s) for s in str.split() if s.isdigit()] [23, 11, 2] 他のすべての場合、正規表現を使用するのが最良の選択です。また、値を抽出するときは、文字列からintに変換するのが最適です。例: >>> import re >>> [float(s) for s in re.findall