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']
Python