string 是 immutable 的物件,用來存放字串裡每個字元的資料.可以用來表示 string 的符號有 '、"、"""、''' .
>>> name = 'Daniel Huang'
>>> print(name)
Daniel Huang
>>> textstring = """Hello
... World ! """
>>> print(textstring)
Hello
World !
>>> text = ''' Hello
... Python ~ '''
>>> print(text)
Hello
Python ~
如果字串不想要有跳脫字元,想要印出所有符號的字串只要在前面加上 r 即可.
>>> slatsh_str = r'\* {}!@#``-_\n'
>>> print(slatsh_str)
\* {}!@#``-_\n
在 str 物件裡利用 {} 搭配 format 可以把,format 後的參數帶到字串裡的 {} 位置.
>>> item_list = 'i1 : {}, i2 : {} , i3 : {}'.format('python' , 100 , 4.5)
>>> type(item_list)
<class 'str'>
>>> print(item_list)
i1 : python, i2 : 100 , i3 : 4.5
在 {} 裡加上參數的 index 就可以,根據 index 帶入字串.
>>> item_list = 'i1 : {2}, i2 : {0} , i3 : {1}'.format('python' , 100 , 4.5)
>>> print(item_list)
i1 : 4.5, i2 : python , i3 : 100
還可以將參數宣告變數,帶入 {} 的變數裡.
>>> item_list = 'i1 : {item2}, i2 : {item1} , i3 : {item3}'.format(item1='python' , item2=100 , item3=4.5)
>>> print(item_list)
i1 : 100, i2 : python , i3 : 4.5
下面的 format 代表把參數帶到 12 個字元裡的中間,並且左右用 * 補滿 12 的長度.
>>> 'passwd: {:*^12}'.format(888)
'passwd: ****888*****'
^ 是中間的 align field.
< 是左邊的 align field.
> 是右邊的 align field.
format 這 function 可以用 % 來替代.
>>> 'Number : %d , Hex : %x , Str : %s ' % (1,12,'Hello')
'Number : 1 , Hex : c , Str : Hello '
format 標準格式如下,各自詳細內容可以再細查.
:[[fill]align][sign][#][0][width][grouping_option][.precision][type]
在 python3.6 以上,如果字串前面加上 f 可以在 {} 裡面寫程式.
>>> num1 = 2
>>> num2 = 3
>>> f'sum is {num1 + num2}'
'sum is 5'
還是可以在 : 後面加上要 format 的格式.
>>> f'sum is {num1 / num2:=+3.2%}'
'sum is +66.67%'
dir 這方法可以看到物件所有的屬性及函數.
>>> dir('Daniel')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
可以看到 str 物件已經有定義了許多方法可以使用.
>>> 'daniel'.upper()
'DANIEL'
>>> 'a,b,c,d,e'.split(",")
['a', 'b', 'c', 'd', 'e']
>>> 'a,b,c,d,e'.rfind('c')
4
用 dir 可以看到很多方法,如果不知道怎麼使用的話,可以搭配 help 來查看方法如何使用.
>>> help(''.join)
Help on built-in function join:
join(iterable, /) method of builtins.str instance
Concatenate any number of strings.
The string whose method is called is inserted in between each given string.
The result is returned as a new string.
Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
(END)
可以看到 join 可以把 string 帶到 array 用該 string 分開成字串.
>>> '|'.join(['id','name','tel','addr'])
'id|name|tel|addr'
>>> '99'.join(['id','name','tel','addr'])
'id99name99tel99addr'