文字列から改行キャリッジリターンの空白とストリップを削除するにはどうすればよいですか?私は試した:
a = []
for i in range(len(lines)):
a.append(lines[i].rstrip().lstrip('\n'))
linesは、readlines()関数で作成された行のリストです。
文字列から改行キャリッジリターンの空白とストリップを削除するにはどうすればよいですか?私は試した:
a = []
for i in range(len(lines)):
a.append(lines[i].rstrip().lstrip('\n'))
linesは、readlines()関数で作成された行のリストです。
str.strip()
文字列の両側からすべての空白を削除するので、必要なことを行う最も簡単な方法は次のとおりです。
with open("source.txt") as file:
a = [line.strip() for line in file]
コードの問題は、使用している方法str.lstrip()
とstr.rstrip()
間違った方法です。改行は右側にありますが、左側から削除しようとしています。str.rstrip()
改行は、右からすべての空白(改行を含む)を削除するときに削除されますがstr.lstrip("\n")
、左から改行文字が見つからないため、何も実行されないため、問題が発生します。
改行以外の末尾の空白を残す必要がある場合はline.rstrip("\n").lstrip()
、元のコードから左右のストリップの引数を交換する必要があります。これにより、上記のコードの場合のように、改行以外の空白が削除されなくなります。
これを行うためにリスト内包表記を使用していることに注意してください。これは、より読みやすく効率的であり、このようなタスクを実行するための優れた方法です。
また、ファイルオブジェクトを直接ループする方が効率的です(行をメモリにロードする必要はありません)。ファイルを開くためのwithステートメントの使用に注意してください-これは、微妙なバグからユーザーを保護し、(再び)読みやすくなるため、Pythonのベストプラクティスです。
a = [line.strip() for line in lines]
行リストに入れる前に削除したほうがいいと思います