2017-02-07 3 views
0

Я использую метод str.split(), и я могу определить, что вызывает разницу в результате, но я не понимаю, почему это так.В чем причина различий в распределении этой строки?

>>> dummy_line = "Line1 \nLine2 \nLine3" 
>>> print(dummy_line.split()) 
['Line1', 'Line2', 'Line3'] 

>>> print(str.split(" ")) 
['Line1', '\nLine2', '\nLine3'] 

Почему определение раздвоения разделителей как " " во втором случае в результате возвращенных строк, включая новые линии экранирующего символ \n?

+6

'.split' без аргумента расщепляется на * пробельном *, в то время как в вашем втором примере, вы распределяете только на * одиночных пробелах *. –

+0

@ juanpa.arrivillaga: это более похоже на ответ, чем комментарий. – DSM

ответ

3

str.split(" ") разделён на одно место. Поэтому сохраняются новые строки.

str.split() разрушает все пробелы. (\s, \r, \n, \t)

Может быть, ваше недоразумение является поддержка Python для аргументов функций по умолчанию?

Подсказка: Попробуйте dummy_line = "Line 1\nLine 2"

+0

Более конкретно, 'str.split ('')' разделяется только на одно пространство, тогда как 'str.split()' разделяет 1 или более пробелов. –

+2

Я бы не назвал символ новой строки или возврат каретки «одним или несколькими пробелами» –

+0

(1 или более пробелов ИЛИ символ новой строки, но я фокусировался на той части ответа, которая неточна). Это неверно: «str.split (« ») отделяется только от пробелов». Он отделяется только * одним * пространством, а не * пробелами *. –

0
  • раскола() - полоса всех пробельных символов для вас - от курса, включая «\ п»
  • раскола (»«) - полоса ровно один пробел для вас.