本文和大家分享的主要是python
中Character string相關(guān)內(nèi)容,一起來(lái)看看吧,希望對(duì)大家
學(xué)習(xí)python 有所幫助。
1
、
python
字符串
字符串是 Python
中最常用的數(shù)據(jù)類型。我們可以使用引號(hào)
('
或
")
來(lái)創(chuàng)建字符串,
l
Python
不支持單字符類型,單字符也在
Python
也是作為一個(gè)字符串使用。
>>> var1 = 'hello python' #
定義字符串
>>> print(var1[0]) #
切片截取,從
0
開(kāi)始,不包括截取尾數(shù)
h
>>> print(var1[0:5])
hello
>>> print(var1[-6:])
python
>>> var2 = var1[0:6]+'world' #
截取字符并拼接賦值給新變量
>>> print(var2)
hello world
2
、
python
轉(zhuǎn)義字符
\ :
在行尾時(shí),為續(xù)行符
\\ :
反斜杠轉(zhuǎn)義,輸出
'\'
\' :
單引號(hào)轉(zhuǎn)義
\" :
雙引號(hào)轉(zhuǎn)義
\b :
退格(
backspace
)
\n :
換行
\v :
縱向制表符
\t :
橫向制表符
\r :
回車(chē)
\f :
換頁(yè)
3
、
python
字符串運(yùn)算符
(+)
拼接,
(*)
重復(fù),
([])
索引,
([:])
切片,
(in)
成員判斷,
(not in)
非成員判斷,
(r/R)
元素輸出字符串
>>> var1 = 'hello'
>>> var2 = 'python'
>>> print(var1+var2) #
拼接字符串
hellopython
>>> print(var1*3) #
重復(fù)輸出字符串
hellohellohello
>>> print(var1[0]) #
索引字符串
h
>>> print(var1[3:]) #
索引切片
lo
>>> 'e' in var1 #
判斷字符串是否在變量中
True
>>> 'p' not in var1 #
判斷字符串是否不在變量中
True
>>> print("he\tllo \n")
he llo
>>> print(r"he\tllo \n") #
原始輸出字符串,也就是原始輸出轉(zhuǎn)義字符
he\tllo \n
4
、格式化字符串
Python
支持格式化字符串的輸出 。盡管這樣可能會(huì)用到非常復(fù)雜的表達(dá)式,但最基本的用法是將一個(gè)值插入到一個(gè)有字符串格式符
%s
的字符串中。
在 Python
中,字符串格式化使用與
C
中
sprintf
函數(shù)一樣的語(yǔ)法。
python
字符串格式化符號(hào):
%c
格式化字符及其
ASCII
碼
%s
格式化字符串
%d
格式化整數(shù)
%u
格式化無(wú)符號(hào)整型
%o
格式化無(wú)符號(hào)八進(jìn)制數(shù)
%x
格式化無(wú)符號(hào)十六進(jìn)制數(shù)
%X
格式化無(wú)符號(hào)十六進(jìn)制數(shù)(大寫(xiě))
%f
格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度
%e
用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
%E
作用同
%e
,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
%g%f
和
%e
的簡(jiǎn)寫(xiě)
%G%f
和
%E
的簡(jiǎn)寫(xiě)
%p
用十六進(jìn)制數(shù)格式化變量的地址
格式化操作符輔助指令:
*
定義寬度或者小數(shù)點(diǎn)精度
-
用做左對(duì)齊
+
在正數(shù)前面顯示加號(hào)
( + )
在正數(shù)前面顯示空格
#
在八進(jìn)制數(shù)前面顯示零
('0')
,在十六進(jìn)制前面顯示
'0x'
或者
'0X'(
取決于用的是
'x'
還是
'X')
0
顯示的數(shù)字前面填充
'0'
而不是默認(rèn)的空格
%'%%'
輸出一個(gè)單一的
'%'
(var)
映射變量
(
字典參數(shù)
)
m.n.m
是顯示的最小總寬度
,n
是小數(shù)點(diǎn)后的位數(shù)
(
如果可用的話
)
>>> print("ascii:%c"%'s') #
格式化輸出字符
ascii:s
>>> print("ascii:%c"%'1') #
格式化輸出數(shù)字
ascii:1
>>> print("str:%s"%'character string') #
格式化字符串
str:character string
>>> print("str:%d"%888) #
格式化整數(shù)
str:888
>>> print("str:%f"%888) #
格式浮點(diǎn)數(shù)
str:888.000000
>>> print("str:%e"%888) #
格式化科學(xué)計(jì)數(shù)浮點(diǎn)數(shù)
str:8.880000e+02
>>> print("str:%E"%888) #
同上
str:8.880000E+02
>>> print("str:%G"%888) #%f
和
%E
的簡(jiǎn)寫(xiě)
str:888
>>> print("str:%20f"%888.089) #
定義
20
寬度輸出
str: 888.089000
>>> print("str:%-20f"%888.089) #
用左對(duì)齊
str:888.089000
>>> print("str:%+20f"%888.089) #
在正數(shù)前顯示加號(hào)
str: +888.089000
>>> print("str:%+-20f"%888.089) #
左對(duì)齊顯示加號(hào)
str:+888.089000
>>> print("str:%020f"%888.089) #
以
0
填充默認(rèn)的空格
str:0000000000888.089000
>>> print("str:%%%20f"%888.089) #
在數(shù)字前輸入
%
號(hào)
str:% 888.089000
>>> print("str:%%%-20f"%888.089) #
左對(duì)齊輸出
%
號(hào)
str:%888.089000
>>> print("str:%20.3f"%888.089) #
顯示最小總寬度
20
,小數(shù)點(diǎn)后位數(shù)為
3
位
str: 888.089
自python2.6
開(kāi)始,增加格式化字符串函數(shù)
str.format():
用法:它通過(guò){}
和
:
來(lái)代替
%
位置參數(shù)不受順序約束,且可以為{}
空
,
只要
format
里有相對(duì)應(yīng)的參數(shù)值即可
,
如參數(shù)值不夠就會(huì)報(bào)錯(cuò),參數(shù)索引從
0
開(kāi),傳入位置參數(shù)列表可用
*
列表
In [27]: '{}+{}={}'.format(1,2,3) #
格式化按順序應(yīng)用參數(shù)值
Out[27]: '1+2=3'
In [28]: '{2}-{1}={0}'.format(1,2,3) #
指定順序應(yīng)用參數(shù)值
Out[28]: '3-2=1'
In [29]: '{0}+{0}={1}'.format(2,3) #
指定參數(shù)可以重復(fù)使用
Out[29]: '2+2=3'
In [30]: '{}+{}={}'.format(2,3) #
如不指定順序,
format
參數(shù)不夠就會(huì)報(bào)錯(cuò)
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
in <
module>()
----> 1 '{}+{}={}'.format(2,3)IndexError: tuple index out of range
In [31]: l1 = [2,4,8]
In [32]: '{}*{}={}'.format(*l1) #
使用列表引用參數(shù)值
Out[32]: '2*4=8'
In [33]: dct = {'name':'python','age':20} #
定義字典
In [35]: 'welcom to {name},age is {age}'.format(name='qi',age=28) #
變量引用
Out[35]: 'welcom to qi,age is 28'
In [36]: 'welcom to {name},age is {age}'.format(**dct) #
使用
**
引用字典參數(shù)必須填寫(xiě)
key
值
Out[36]: 'welcom to python,age is 20'
填充與格式化:
In [53]: "{0: >20}".format("string") #
從
0
位開(kāi)始已空格填充
20
寬度左對(duì)齊
Out[53]: ' string'
In [54]: "{0:&>20}".format("string")
Out[54]: '&&&&&&&&&&&&&&string'
In [55]: "{0:#>20}".format("string") #
使用
#
號(hào)會(huì)有個(gè)小
bug
....:
Out[55]: '##############string'
In [60]: '{0:+<20}'.format("string") #
向右對(duì)齊填充
+
Out[60]: 'string++++++++++++++'
In [61]: '{0:+^20}'.format("string") #
劇中對(duì)齊填充
+
Out[61]: '+++++++string+++++++'
精度與進(jìn)制:
>>> '{0:.3f}'.format(10/3) #
小數(shù)位進(jìn)度格式化
'3.333'
>>> '{0:b}'.format(8) #
格式化二進(jìn)制
'1000'
>>> '{0
}'.format(9) #
格式化八進(jìn)制
'11'
>>> '{0:x}'.format(26) #
格式化十六進(jìn)制
'1a'
>>> '{0:,}'.format(123456789) #
千分位格式化
'123,456,789'
使用索引:
>>> l2 = ['AA',{'bb':'cc'},('d','e')] #
列表索引引用
>>> 'outing:{0[0]}'.format(l2)
'outing:AA'
>>> 'outing:{0[0]},{0[1]}'.format(l2) #
將列表當(dāng)成一個(gè)元素,在其中索引值
"outing:AA,{'bb': 'cc'}"
5
、
python
的字符串方法
1 >>> s = 'i mi to' #
將字符串的第一個(gè)字符改為大寫(xiě)
2 >>> s.capitalize()
3 'I mi to'
4
5 >>> s = 'I MI TO' #
將字符串所有字符改為小寫(xiě)
6 >>> s.casefold()
7 'i mi to'
8
9 >>> s.center(15) #
將字符串劇中,并用空格將字符串填充長(zhǎng)度,如指定長(zhǎng)度小于實(shí)際長(zhǎng)度則沒(méi)有效果
10 ' I MI TO '
11
12 >>> s = 'abcabcabcabc' #
返回
sub
在字符串里出現(xiàn)的次數(shù),
start
,
end
為可選參數(shù),決定范圍
13 >>> s.count('a',0,12)
14 4
15 >>> s.encode(encoding='utf-8',errors='strict') #
以
encoding
指定的編碼格式對(duì)字符串進(jìn)行編碼
16 b'abcabcabcabc'
17 >>> s.endswith('abc',1,12) #
檢查字符串是否以
sub
結(jié)尾,是返回
True,
否返回
False
,
start
,
end
為可選參數(shù),決定范圍
18 True
19
20 >>> s = 'a\tb\tc'
21 >>> s.expandtabs(4) #
把字符串的
tab
字符(
\t
)轉(zhuǎn)化為空格,如不指定
tabsize,
默認(rèn)為
8
個(gè)空格
22 'a b c'
23
24 >>> s.find('b') #
檢測(cè)字符串是否在字符串中,如在則返回索引,否則返回
-1
,可指定起始值。
25 2
26
27 >>> s='hello python'
28 >>> s.index('hello') #
類似
find()
,不同在于如果
sub
不在字符串中,返回異常
29 0
30
31 >>> s.isalnum() #
有空格返回
false
32 False
33 >>> s='hellopython'
34 >>> s.isalnum() #
如果字符串至少有一個(gè)字符,并且所有字符都是字母或數(shù)字則返回
True,
否則
False
35 True
36 >>> s.isalpha() #
如果字符串至少有一個(gè)字符,并且所有字符都是字母則返回
True,
否則
False
37 True
38
39 >>> s = '123'
40 >>> s.isdigit() #
如果字符串只包含數(shù)字則返回
True,
否則返回
False
41 True
42
43 >>> s = '123'
44 >>> s.isdecimal() #
如果字符串只包含十進(jìn)制數(shù)字則返回
True
,否則返回
False
45 True
46 >>> s= 'ox123'
47 >>> s.isdecimal()
48 False
49 >>> s = '0.33'
50 >>> s.isdecimal()
51 False
52
53 >>> s = 'abc'
54 >>> s.islower() #
如果字符中至少包含一個(gè)能區(qū)分大小寫(xiě)的字符,并且這些字符都是小寫(xiě)則返回
True,
否則返回
Flase
55 True
56 >>> s = 'Abc'
57 >>> s.islower()
58 False
59
60 >>> s = 'ABC'
61 >>> s.isupper() #
果字符中至少包含一個(gè)能區(qū)分大小寫(xiě)的字符,并且這些字符都是大寫(xiě)則返回
True,
否則返回
Flase
62 True
63 >>> s = 'ABc'
64 >>> s.isupper()
65 False
66 >>>
67
68 >>> s = '123'
69 >>> s.isnumeric() #
如果字符串只包含數(shù)字字符,則返回
True,
否則返回
False
70 True
71 >>> s = '123a'
72 >>> s.isnumeric()
73 False
74
75 >>> 'def'.isidentifier() #
判斷字符串是否包含該語(yǔ)言的保留字
76 True
77
78 >>> 'aaa'.isprintable() #
判斷是否可以打印
79 True
80
81 >>> ''.isspace()
82 False
83 >>> ' '.isspace() #
判斷字符串中至少有一個(gè)字符且所有都是空格,否則返回
false
84 True
85 >>> ' a'.isspace()
86 False
87
88 >>> 'Abc'.istitle() #
判斷是否是標(biāo)題 格式,可以理解為首字母大寫(xiě)。
89 True
90 >>> 'aBC'.istitle()
91 False
92
93 >>> s = '123'
94 >>> '_'.join(s) #
返回一個(gè)用指定字符串分隔的字,或者是將指定字符加入到另一個(gè)字符中。
95 '1_2_3'
96 >>> s.join('abc')
97 'a123b123c'
98
99 >>> s = 'ABC'
100 >>> s.lower() #
返回的是指定字符串的拷貝,并轉(zhuǎn)化成小寫(xiě)
101 'abc'
102
103 >>> s.ljust(10,'+') #
可以指定寬度,以及填充字符串,返回的是按寬度,填充字符串格式化后的左對(duì)齊的字符串。
104 'ABC+++++++'
105
106 >>> 'aaabccc'.partition('b') #
在字符串中查找指定的字符,如找到則返回字符前部分,字符本身和后部分,如沒(méi)找到則返回字符串和兩個(gè)空字符串。
107 ('aaa', 'b', 'ccc')
108 >>> 'aaabccc'.partition('e')
109 ('aaabccc', '', '')
110
111 >>> 'aaabccc'.rpartition('b') #
與
partition
一樣,但是是從右邊開(kāi)始
112 ('aaa', 'b', 'ccc')
113 >>> 'aaabccc'.rpartition('c')
114 ('aaabcc', 'c', '')
115
116
117 >>> 'aaaaabbcc'.replace('a','A') #
用指定字符串替換指定字符串,如果不指定替換次數(shù),則替換所有
118 'AAAAAbbcc'
119 >>> 'aaaaabbcc'.replace('a','A',2)
120 'AAaaabbcc'
121
122 >>> 'aabbcc'.rfind('a') #
返回指定子串的最高索引,如果沒(méi)找到則返回
-1
,可以指定要開(kāi)始替換的起始,結(jié)束位置。
123 1
124 >>> 'aabbcc'.rfind('e')
125 -1
126 >>> 'aabbcc'.rindex('a') #
與上面的
rfind
一樣,只是如果沒(méi)找到不是返回
-1
,而是觸發(fā)錯(cuò)誤
127 1
128 >>> 'aabbcc'.rindex('e')
129 Traceback (most recent call last):
130 File "", line 1, in
131 ValueError: substring not found
132
133 >>> 'aa'.rjust(10,'+') #
與
ljust()
相對(duì)應(yīng),右對(duì)齊
134 '++++++++aa'
135 >>> 'aa'.ljust(10,'+')
136 'aa++++++++'
137
138 >>> 'aabccbddbee'.split('b') ##
按指定字符串對(duì)目標(biāo)字符串進(jìn)行切割,可以指定切割次數(shù)
139 ['aa', 'cc', 'dd', 'ee']
140 >>> 'aabccbddbee'.split('b',2)
141 ['aa', 'cc', 'ddbee']
142
143 >>> 'aabccbddbee'.rsplit('b',2) #
與
split
作用相同,但是從右側(cè)開(kāi)始
144 ['aabcc', 'dd', 'ee']
145
146 >>> ' aabb '.strip() #
移除字符串兩側(cè)的指定字符串,默認(rèn)移除空格,需要注意的是可以指定多個(gè)字符
147 'aabb'
148 >>> ' aabb'.strip('b')
149 ' aa'
150 >>> ' aabb'.strip('ab')
151 ' '
152 >>> 'beaacebb'.rstrip('eb') #
與
strip
一樣,從右側(cè)刪除指定字符,可以為多個(gè)
153 'beaac'
154
155 >>> 'aa\nbb\ncc\ndd'.splitlines() #
按換行符切割顯示,如沒(méi)指定
keepends=True
則將換行符移除。
156 ['aa', 'bb', 'cc', 'dd']
157 >>> 'aa\nbb\ncc\ndd'.splitlines(keepends=True)
158 ['aa\n', 'bb\n', 'cc\n', 'dd']
159
160 >>> 'aabbc'.startswith('a') #
判斷字符串是否以某個(gè)字符開(kāi)頭,可以是多字符
161 True
162 >>> 'aabbc'.startswith('b')
163 False
164 >>> 'aabbc'.startswith('aab')
165 True
166
167 >>> 'aaBBcc'.swapcase() #
轉(zhuǎn)換大小寫(xiě)
168 'AAbbCC'
169
170 >>> 'wend is ok'.title() #
標(biāo)題格式,首字母大寫(xiě),其它字符小寫(xiě)
171 'Wend Is Ok'
172
173 >>> 'wend is ok'.upper() #
將字符全部轉(zhuǎn)換成大寫(xiě)
174 'WEND IS OK'
175
176 >>> 'wend is ok'.zfill(20) #
這里的
z
指
zero
,用
0
將字符填充到指定長(zhǎng)度
177 '0000000000wend is ok'
來(lái)源:博客園