Pythonで改行区切り文字を使用して文字列を分割する


101

改行がある文字列を区切る必要があります。どうすればそれを達成できますか?以下のコードを参照してください。

入力:

data = """a,b,c
d,e,f
g,h,i
j,k,l"""

必要な出力:

['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

私は以下のアプローチを試しました:

1. output = data.split('\n')
2. output = data.split('/n')
3. output = data.rstrip().split('\n')

1
の出力はrepr(data)何ですか?
Ashwini Chaudhary 2014

回答:


187

str.splitlines メソッドはそれを正確に与えるはずです。

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

6
便利な点の1つstr.splitlinesは、ファイナル\nが存在する場合はそれを削除することです。つまり、'foo\nbar\n'.split() == ['foo', 'bar', '']しばらくstr.splitlines('foo\nbar\n') == ['foo', 'bar']
マシューMoisen

10
data = """a,b,c
d,e,f
g,h,i
j,k,l"""

print(data.split())       # ['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

str.splitデフォルトでは、すべての空白文字で分割されます。実際の文字列に他の空白文字が含まれている場合は、

print(data.split("\n"))   # ['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

または@Ashwini Chaudharyがコメント示唆したように、あなたは使うことができます

print(data.splitlines())

安全のため.splitlinesに、文字列にスペースがある場合はどうするかなど
Ashwini Chaudhary 14

@AshwiniChaudharyうん、それが私が提案しsplit("\n")た理由です。あるsplitlinesよりも良いですか.split("\n")
thefourtheye 14

4
それはのために働くだろう\r\nとだけでなく、ライン境界の他のタイプ。
Ashwini Chaudhary 14

あなたの文字列がで終わっている場合\nsplitlines()一方でそれを無視してsplit("\n")、追加の空の文字列になります""結果の末尾を。
Moberg、2016年

10

改行だけで分割したい場合は、splitlines()を使用することをお勧めします。

例:

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data
'a,b,c\nd,e,f\ng,h,i\nj,k,l'
>>> data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

split()でも動作します:

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data
'a,b,c\nd,e,f\ng,h,i\nj,k,l'
>>> data.split()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

しかしながら:

>>> data = """
... a, eqw, qwe
... v, ewr, err
... """
>>> data
'\na, eqw, qwe\nv, ewr, err\n'
>>> data.split()
['a,', 'eqw,', 'qwe', 'v,', 'ewr,', 'err']

あなたが好きなように分割するためにキャラクターを渡す必要がないのは奇妙に見えますdata.split('\n')か?

7

この目的のために特別な方法があります:

data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

4

どうぞ:

>>> data = """a,b,c
d,e,f
g,h,i
j,k,l"""
>>> data.split()  # split automatically splits through \n and space
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
>>> 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.