Python: 文字列を改行で分割する splitlines()
文字列を改行で分割する場合は、splitlines()メソッドを使うと便利です。
Pythonに用意されている split() メソッドでも改行分割できますが、 splitlines() メソッドだと "\n" や "\r\n"のどちらでも自動で判断して 分割してくれます。 改行分割の場合は素直に splitlines()メソッドを使うことをおすすめします。
書式
文字列.splitlines() # 改行コードを残す場合 文字列.splitlines(keepends=True)
戻り値は改行コードで分割されたリストです。
分割後の文字列の中に改行コードを残したい場合は
「keepends=True」を指定します。デフォルト値はFalseです。
次のサンプルコードでは、改行コード「"\n"」が2つある文字列を改行コードで分割しています。
s = "ab\ncd\nef" # 改行コードで分割 li = s.splitlines() print(li) # ['ab', 'cd', 'ef']
次のコードは「"\n"」と「"\r\n"」が混じったコードです。 両方の改行コードに対応しているのがわかります。
s = "ab\ncd\r\nef" # 改行コードで分割 li = s.splitlines() print(li) # ['ab', 'cd', 'ef']
改行で分割し、空白要素を取り除く場合
途中に空白要素の可能性があって、それを取り除きたい場合は 次のコードになります。
# 複数行の文字列 multi_line_string = ''' line 1 line 2 line 4 ''' # 文字列を改行で分割し、空白要素を除去 result = [line.strip() for line in multi_line_string.splitlines() if line.strip()] print(result)
改行コードを残す場合
「keepends=True」を指定すると分割された文字列の中に改行コードを残すことができます。
次のサンプルコードでは、分割後の文字列の中に改行コードが残されて
「"ab\n"」「"cd\n"」「"ef"」となっています。
s = "ab\ncd\nef" li = s.splitlines(keepends=True) print(li) # ['ab\n', 'cd\n', 'ef']