Разделить строку с помощью разделителя новой строки с помощью 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)?
Ашвини Чаудхари

Ответы:


188

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
Одна удобная деталь str.splitlinesзаключается в том, что он удалит последний, \nесли он есть. Т.е. 'foo\nbar\n'.split() == ['foo', 'bar', '']покаstr.splitlines('foo\nbar\n') == ['foo', 'bar']
Мэтью Мойзен

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, что, если в строках есть пробелы и т. Д.
Ашвини Чаудхари

@AshwiniChaudhary Ага, вот почему я предложил split("\n"). Является ли splitlinesлучше .split("\n")?
thefourtheye

4
Он будет работать \r\nи другой тип границ линии , а также.
Ашвини Чаудхари

Если ваша строка заканчивается на \n, splitlines()она проигнорирует, а в конце результата split("\n")будет дополнительная пустая строка "".
Moberg

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']
>>> 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.