Python ile yeni satır sınırlayıcı kullanarak dizeyi bölme


101

İçinde yeni satır olan dizeyi sınırlandırmam gerekiyor. Bunu nasıl başarabilirim? Lütfen aşağıdaki koda bakın.

Giriş:

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

İstenen çıktı:

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

Aşağıdaki yaklaşımları denedim:

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

1
Çıktısı nedir repr(data)?
— Ashwini Chaudhary

Yanıtlar:


187

str.splitlines yöntem size tam olarak bunu vermelidir.

>>> 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
str.splitlinesBununla ilgili uygun bir kısım , \neğer varsa finali kaldıracak olmasıdır . Yani, 'foo\nbar\n'.split() == ['foo', 'bar', '']sürestr.splitlines('foo\nbar\n') == ['foo', 'bar']
— Matthew 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.splitvarsayılan olarak tüm boşluk karakterlerine böler. Gerçek dizede başka boşluk karakterleri varsa, kullanmak isteyebilirsiniz

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

Veya yorumlarda @Ashwini Chaudhary'nin önerdiği gibi , kullanabilirsiniz

print(data.splitlines())

Sadece daha güvenli bir kullanım için .splitlines, ya dizelerde boşluklar varsa, vb.
— Ashwini Chaudhary

@AshwiniChaudhary Yup, bu yüzden önerdim split("\n"). Mı splitlinesdaha iyi .split("\n")?
— thefourtheye

4
Bu \r\nve diğer türdeki çizgi sınırları için de çalışacaktır .
— Ashwini Chaudhary

Dizeniz bir ile bitiyorsa \n, splitlines()onu yok sayacak ve sonucun sonunda split("\n")ek bir boş dizge olacaktır "".
— Moberg

10

Yalnızca satırsonu satırlarına göre bölmek istiyorsanız, bölme satırlarını () kullanmak daha iyidir :

Misal:

>>> 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 () ile de çalışır:

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

Ancak:

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

karaktere göre bölmek zorunda olmaman garip görünüyor data.split('\n')?

7

Özellikle bu amaç için bir yöntem var:

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

4

Hadi bakalım:

>>> 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']
>>> 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.