2016-11-08 38 views
0
>>> string 
'This contain slashN:\n' 
>>> textwrap.wrap(string, 40) 
['This contain slashN:'] 
>>> textwrap.wrap(string, 40, replace_whitespace=False) 
['This contain slashN:'] 
>>> 

我預計
['This contain slashN:\n']
爲什麼textwrap.wrap還是更換空白(\n這裏)? 雖然其documentation說:Python的testwrap.wrap更換空白dispite禁用

replace_whitespace

(默認:true)如果爲true,後選項卡擴展,但包裝前,包裝()方法將用一個空格替換每個空格字符。替換的空白字符如下所示:選項卡,換行符,垂直製表符,換頁符和回車符('\ t \ n \ v \ f \ r')。

如果expand_tabs爲假且replace_whitespace是真實的,每個選項卡字符將通過一個單一的空間,這是不一樣的製表符擴展來代替。

如果replace_whitespace是假的,換行可能出現在一行的中間,會導致奇怪的輸出。出於這個原因,文本應該被拆分成段落(使用str.splitlines()或類似的),它們被分開包裝。

編輯:爲了增加我的預期

回答

1

沒有爲剝離前後空白一個單獨的參數drop_whitespace。它默認爲true。通過False關閉:

>>> textwrap.wrap('This contain slashN:\n', 40, replace_whitespace=False, drop_whitespace=False) 
['This contain slashN:\n'] 
+0

但爲什麼'replace_whitespace = False'不保留'\ n'? – user2763554

+0

@ user2763554:*由於剝離前導和尾隨空白*有不同的參數。每個參數的文檔都沒有描述整個函數的所有內容;事實上有一個論點說,它是用來決定前導/尾隨空白是否被剝離意味着默認情況下前導/尾隨空白被剝離。另外,你可以看到'replace_whitespace'不在這裏應用,因爲你的'\ n'不是被一個空格替代,而是完全被刪除。 – BrenBarn