【Python】リスト内の文字列から「K」より大きい文字を削除する方法
Pythonで文字列内の「K」より大きい文字を削除したい場合、シンプルな反復処理とord関数(文字のUnicode表現を取得する組み込み関数)を組み合わせることで実現できます。
本記事では、リスト内の複数の文字列から条件に合わない文字を取り除く具体的な方法を、サンプルコード・出力結果・詳しい解説とともに紹介します。
サンプルコード
my_list = ["python", "is", "easy", "to", "learn"]
print("The list is :")
print(my_list)
K = 9
print("The value of K is ")
print(K)
my_result = []
for element in my_list:
result_string = ''
for sub in element:
if (ord(sub) - 97 <= K):
result_string += sub
my_result.append(result_string)
print("The resultant list is :")
print(my_result)
出力結果
The list is : ['python', 'is', 'easy', 'to', 'learn'] The value of K is 9 The resultant list is : ['h', 'i', 'ea', '', 'ea']
コードの解説
まず、文字列を含むリスト
my_listを定義し、コンソールに表示します。次に、しきい値となる変数
Kの値を定義し、コンソールに表示します。結果を格納するための空のリスト
my_resultを用意します。外側のループでリストの各文字列を順番に取り出し、内側のループで各文字を1つずつチェックします。
ord(sub) - 97により、英小文字を「a」を基準(a=0, b=1, c=2…)とした相対的な位置に変換し、その値がK以下かどうかを判定します。条件を満たす文字は
result_stringに連結され、条件を満たさない文字(つまり「K」より大きい文字)は除外されます。各文字列の処理が完了したら、結果の文字列を
my_resultに追加します。最後に、処理結果のリストをコンソールに出力します。
ポイント
ord('a')は97を返すため、ord(文字) - 97と書くことで、英小文字を0〜25の数値に変換できます。この仕組みを利用すれば、「Kより大きい文字」を簡単にフィルタリングすることが可能です。文字ごとのUnicode値を比較するこの手法は、文字列のカスタムフィルタリング処理の基本として覚えておくと便利です。
-
Pythonでリスト内包表記とord()関数を使ってアルファベット以外の文字をすべて削除する方法
この記事では、Python 3.x(およびそれ以前のバージョン)におけるリスト内包表記とord()関数を活用して、文字列からアルファベット以外の文字をすべて削除するプログラムについて解説します。アルゴリズム処理の流れは以下の3ステップです。与えられた文字列を走査し、各文字をチェックします。文字コードが「a〜z」または「A〜Z」の範囲に含まれる文字のみを選択します。join()関数を使って、条件を満たした文字をすべて連結して出力します。実装例def remchar(input): # 大文字と小文字の両方をチェック final = [ch for ch in input if
-
Pythonで文字列から特定の文字を削除する方法|replaceと正規表現の使い方
replace()メソッドで文字を削除するPythonの文字列(str)クラスには、文字列内の部分文字列を置換するためのreplace()メソッドが用意されています。削除したい文字を空文字列()に置き換えることで、実質的にその文字を取り除くことができます。>>> Hello people.replace(e, ) Hllo popl複数の文字を一度に削除する:正規表現を使う1行のコードで複数の文字をまとめて削除したい場合は、正規表現を使うのが便利です。削除したい文字を「|」で区切ってパターンを指定し、re.sub(置換対象パターン, 置換後の文字列, 対象文字列)という形式で