Pythonで末尾の改行だけ取り除く

ファイルから読み込んだ時など、末尾にある改行だけ取り除きたい場合があります。
末尾の1文字だけ取り除くと改行以外の文字が取り除かれてしまう恐れがありますね。
この場合Pythonではどのように行うのか調べてみました。

目次

末尾の改行だけ取り除く

いずれもstringとスペースは残り、字数9となり、末尾の改行(\r or \n)だけが取り除かれます。
\r\nWindows\nLinux\rは旧Mac

PHP rtrim

<?php
echo strlen(rtrim("string   \r\n\r\n", "\r\n"));

echo strlen(rtrim("string   \n\n", "\r\n"));

echo strlen(rtrim("string   \r\r", "\r\n"));

Python rstrip 2.x 3.x

print(len('string   \r\n\r\n'.rstrip('\r\n')))

print(len('string   \r\r'.rstrip('\r\n')))

print(len('string   \n\n'.rstrip('\r\n')))

Pythonは文字列をスライス表記で操作できるので次のようなことが可能ですが、末尾が文字列でない場合も取り除いてしまうため注意が必要です。

s = 'string   \n'
print(s[:-1])
# string   

s = 'string'
print(s[:-1])
# strin

こちらを参考にしました。

PHPで言うところのltrim, trim, rtrimが、
Pythonではlstrip, strip, rstripで利用できるようです。