#26975: [Python]你知道str.split的細節嗎?只能分隔空白?!指定去除符號會發生什麼事?


406490150@gms.tku.edu.tw (我是朱朱)

School : 國立交通大學
ID : 139794
IP address : [140.113.236.122]
Last Login :
2022-09-03 11:13:16
c186. 蝸牛老師的點名單 -- 板橋高中python教學題 | From: [1.172.251.196] | Post Date : 2021-09-05 16:38

更準確地說,是 whitespace = ' \t\n\r\v\f' 都會分離

這個定義,可以從 import string 按Ctrl進入裡面看詳細的程式碼得知

 

# Some strings for ctype-style character classification
whitespace = \t\n\r\v\f'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_letters = ascii_lowercase + ascii_uppercase
digits = '0123456789'
hexdigits = digits + 'abcdef' + 'ABCDEF'
octdigits = '01234567'
punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
printable = digits + ascii_letters + punctuation + whitespace

 

\t = tab

\v = vertical tab

 

\n = 換行

\r = 有時候系統不一樣的換行, carriage return

空白 = 很多個連續空白也可以

\f = form feed,換頁符號

 

如果  字串最前面 或 字串尾  有這些[WhiteSpace],會自動達成strip的功能,而不會產生一個空的字串

例如'\t\t\t123456\t7890123\t'.split()只會產生['123456','7890123']兩個想要的東西

 

但是如果自己指定'123, 456,     ,      '.spit(', '),產生的答案與上面的全部剃除又不一樣了

['123', '456', '    ', '     ']

 

 

詳細可以參考:

https://stackoverflow.com/questions/20298677/what-does-v-and-r-mean-are-they-white-spaces

https://stackoverflow.com/questions/3091524/what-are-carriage-return-linefeed-and-form-feed

https://www.programiz.com/python-programming/methods/string/split

 

PS.

這題的一行寫法,可以

print(sep='\n', *inupt().split())

 
#26976: Re:[Python]你知道str.split的細節嗎?只能分隔空白?!指定去除符號會發生什麼事?


406490150@gms.tku.edu.tw (我是朱朱)

School : 國立交通大學
ID : 139794
IP address : [140.113.236.122]
Last Login :
2022-09-03 11:13:16
c186. 蝸牛老師的點名單 -- 板橋高中python教學題 | From: [1.172.251.196] | Post Date : 2021-09-05 16:42

更準確地說,是 whitespace = ' \t\n\r\v\f' 都會分離

這個定義,可以從 import string 按Ctrl進入裡面看詳細的程式碼得知

 

或者也可以直接去github看

https://github.com/python/cpython/blob/main/Lib/string.py#L23-L32

 
 
ZeroJudge Forum