目錄:http://www.itdecent.cn/p/863c446364a8
一、Python 字符串的創(chuàng)建
字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用單引號或雙引號來創(chuàng)建字符串。
創(chuàng)建字符串很簡單,只要為變量分配一個值即可。
實例:
var1=" Hello World! "
var2=' Hello Python '
如果字符串中含有單引號或雙引號則用另外一個即可,或者用\轉移也可以。
var3=" I'm yxt. "
var4='? ?百度里分為"新聞","網(wǎng)頁","知道"等搜索版塊。 '
var5='I\'m a little girl'
二、Python 轉義字符
#? ?\? 續(xù)行符
#當我們要寫的代碼很多時,可以使用續(xù)行符將他分成多行。與print(3+2)結果相同?
print\? ? ?
? ? ? (3+2)??
#\\? 反斜杠符號
#如果我們想要輸出反斜杠時,就用\\
>>>print("hello\\word")
hello\word
#\' 單引號
#用來輸出單引號
>>>print('I\'m xt')
I'm xt
#\" 雙引號
#用來輸出雙引號
>>>print("I am \"xt\" ")
I am "xt"
# \a 響鈴
#在命令行界面時,例如我們?yōu)槌绦蛟O置一個響鈴,運行結束后會響鈴通知我們
print("\a")
# \b 退格符(Backspace)
#刪除退格符前的單個字符
>>>print("ab\bcd")
acd
# \000 空
#輸出一個空格
>>>print("a\000b")
a? b
# \n 換行
#用來換行
>>>print("abc\ndef")
abc
def
# \t 橫向制表符
#相當于一個tab鍵 ,四個空格
>>>print("a\tb")
a? ? b
# \r 回車符
#讓光標回到行首,覆蓋\r 之前的內(nèi)容(在命令提示符中可以實現(xiàn)該功能,在IDLE中會原樣輸出即IDLE中無法實現(xiàn)功能。)
>>>print("abc\rdef")
def
#\f 換頁符
#在文件讀寫時,用于輸出分頁。
>>>print("abc\fdef")
abc? ? ? ? ? ??
def (這里的def自動分到下一頁)
#\0yy??八進制數(shù),yy代表的字符
>>>print("\012")
#這里的結果為換行
\xyy? ? ? ?十六進制數(shù),yy代表的字符? ?
例如:\x0a代表換行 (同上)
三、python 字符串的運算符
實例
假設變量a為"Hello",變量b為"Python"
#? ?+ (字符串連接)
>>>a+b
'HelloPython'
# * (重復輸出字符串)
>>>a*2
"HelloHello"
# [ ] (通過索引獲取字符串中字符)
>>>a[1]
'e'
# [ : ](截取字符串中的一部分)
>>>a[1:5]
'ello'
# in (成員運算符-如果字符串中包含給定字符返回True)
>>>print("o" in a)
True
# not in (成員運算符 - 如果字符串中不包含給定的字符返回 True )
>>>print("a" not in? a)
True
#r/R(原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。原始字符串除在字符串的第一個引號前加上字母"r"(可以大小寫)以外,與普通字符串有著幾乎完全相同的語法。)
>>>print(r"\n")
\n? ? #這里的結果原樣輸出,沒有轉義
四、Python字符串格式化
字符串格式化輸出分為兩類:原始字符串格式化、format函數(shù)(?3.8越來越不支持這樣printf輸出風格一樣的字符串格式化。 而是改用format函數(shù)與?rjust()函數(shù)。)
下面先來說說原始字符串格式化:
實例:
>>> print("我叫%s,今年%d歲。"%("小明",10))
我叫小明,今年10歲。
也可以變'''? ? ''' 分段來寫
print(
'''
name:%s,
age:%d
'''
%("張三",18)
)
輸出結果為:
name:張三,
age:18
字符串格式化符號
? ?-----------------------常用? 占位符----------------------? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# %c?????????格式化字符及其ASCII碼? ?
>>>print("百分號c用來替換:%c"%(65))
百分號c用來替換:A
?#? %s?????????格式化字符串? ?
>>>print("百分號s用來替換:%s"%("字符串"))? ???
百分號s用來替換:字符串 ?
?# %d?????????格式化整數(shù)?
>>>print("百分號d用來替換:%d"%(100))?
百分號d用來替換:100? ? ? ? ? ? ? ? ??
?#? %f?????????格式化浮點數(shù)字,可指定小數(shù)點后的精度?
>>>print("百分號f用來替換:%f"%(10.00))
百分號f用來替換:10.000000? ? ? ? #小數(shù)點后六個零
--------------------進制占位符------------------------
# %u?????????格式化無符號十進制整數(shù)
(%d與%u都是十進制整數(shù),區(qū)分在于有符號還是無符號,?有符號能表示大小,也能表示正負,無符號只能表示大小。?因為Python全面采用有符號整型,所以%u已經(jīng)過時了。)
# %o?????????格式化八進制數(shù)
>>>print("十進制的8可以轉換為八進制的%o"%(8))
十進制的8可以轉換為八進制的10
# %x?????????格式化十六進制數(shù)
>>>print("十進制的10可以轉換為十六進制的%x"%(10))
十進制的10可以轉換為十六進制的a
# %X?????????格式化十六進制數(shù)(大寫)
>>>print("十進制的10可以轉換為十六進制的%X"%(10))
十進制的10可以轉換為十六進制的A
-------------------不常用占位符---------------------
# %e?????????用科學計數(shù)法格式化浮點數(shù)
>>>print("浮點數(shù)10000000用科學計數(shù)法表示為%e"%(10000000))
浮點數(shù)10000000用科學計數(shù)法表示為1.000000e+07
#??%E?????????作用同%e,用科學計數(shù)法格式化浮點數(shù)
>>>print("浮點數(shù)10000000用科學計數(shù)法表示為%E"%(?10000000?))
浮點數(shù)10000000用科學計數(shù)法表示為1.000000E+07?
# %g?????????%f和%e的簡寫
>>>print("浮點數(shù)10000000用科學計數(shù)法表示為%g"%(?10000000?))
浮點數(shù)10000000用科學計數(shù)法表示為1e+07? ? ? ? ? ? ? ? ? ?#去掉小數(shù)點后的無效0? ? ? ? ? ? ?
?#? %G?????????%f 和 %E 的簡寫
?>>>print("浮點數(shù)10000000用科學計數(shù)法表示為%G"%(?10000000?))
浮點數(shù)10000000用科學計數(shù)法表示為1E+07? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?#? %p?????????用十六進制數(shù)格式化變量的地址(指針)(被廢除)
格式化操作符輔助指令
------------------常用輔助指令---------------------
m.n.? ? ? ? ? ? ? ? m 是顯示的最小總寬度,n 是小數(shù)點后的位數(shù)(如果可用的話)
>>>print("%10.3f"%(3.33333))
? ? ? ? ?3.333? ? ? ? ? ? ? ? ? ?#3.333前有五個空格
-? ? ? ? ? ? ? ? ? ? ? 用做左對齊
>>>print("%-10.3f"%(3.33333))
3.333? ? ? ? ? ? ? ? ?#左對齊數(shù)字前無空格
+? ? ? ? ? ? ? ? ? ? ? 在正數(shù)前面顯示加號( + )
>>> print("%+10.2f"%(45))
? ? +45.00
0? ? ? ? ? ? ? ? ? ? ? 右對齊時,在前面填充0而不是空格
>>> print("%010.2f"%(45))
0000045.00
---------------------不常用輔助指令---------------------
#? ? ? ? ? ? ? ? ? ? ? 在八進制數(shù)前面顯示('0o')
? ? ? ? ? ? ? ? ? ? ? ? 在十六進制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X')
>>>print("%#o"%(10))
0o12
>>>print("%#x"%(10))
0xa
>>>print("%#X"%(10))
0XA
%????????????????????當字符串中存在格式化標志時,需要用 %%表示一個百分號
>>>print("20%%%d"%(100))
20%100
下面再來說說格式化字符串的函數(shù)str.format(),它增強了字符串格式化的功能。
字符串模板.format(逗號分隔的參數(shù))
如果模板字符串有多個槽{},且槽內(nèi)沒有指定序號,則按照槽出現(xiàn)的順序分別對應.format()方法中不同的參數(shù)。
>>> print("{}曰:學而時習之,不亦{}".format("孔子","說乎"))
孔子曰:學而時習之,不亦說乎
下面指定了槽的順序,則按順序對應。
>>>print("{1}曰:學而時習之,不亦{0}".format("孔子","說乎"))
說乎曰:學而時習之,不亦孔子
槽除了參數(shù)序號,還可以包括格式控制信息。模板:{參數(shù)序號:格式控制標記}

實例
# 添加填充、對齊、寬度
s="Python"
>>>print("{0:+^10}".format(s))
++Python++
等同于
>>>x="Python"
>>>y="+"
>>>z=10
>>>print("{0:{1}^{2}}".format(x,y,z))
++Python++
#添加千位分隔符
>>>print("{:,}".format(123456789))
123,456,789
#添加精度
>>> print("{:.3f}".format(123.456789))? ? ?
123.457
>>> print("{:.5}".format("Python"))
Pytho
rjust()
Python rjust() 返回一個原字符串右對齊,并使用空格填充至長度 width 的新字符串。如果指定的長度小于字符串的長度則返回原字符串。
模板:str.rjust(width[, fillchar])
>>>print("123".rjust(6))
? ?123? ? ? ? ? ? ? ? ? ? #結果123前有三個空格
五、字符串的內(nèi)置函數(shù)
x="hello python"
---------------------常用函數(shù)---------------------------
(1)# count(str,beg=0,end=len(string))
返回 str 在 string 里面出現(xiàn)的次數(shù),如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
>>>print(x.count("o",0,5))
? ? ? ? ? ? ? ?#x字符串中從索引0到5的位置有一個o
(2)#center(width, fillchar)
返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認為空格。
>>>print(c.center(20,"#"))
####hello python####
(3)#find(str, beg=0, end=len(string))
檢測 str 是否包含在字符串中,如果指定范圍 beg 和 end ,則檢查是否包含在指定范圍內(nèi),如果包含返回其索引值,否則返回-1
>>>print(x.find("l",0,15))
2
(4) #islower()
檢測字符串是否全小寫,小寫返回 True,否則返回 False
>>>print(x.islower())
True
(5)#?isupper()
檢測字符串是否全大寫,大寫返回 True,否則返回 False
>>>print(x.isupper())
False
(6) # lower()
字符串中大寫轉換為小寫
>>>print("ABC".lower())
abc
(7) # upper()
字符串中小寫轉換為大寫
>>>print("abc".upper())
ABC
(8) #strip()
去除字符串前后的特殊字符
>>>print("\nMY TITLE\n".strip())
MY TITLE
(9) #?replace(old, new[, max])
把字符串中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個參數(shù)max,則替換不超過 max 次。
>>>print("my title title".replace("tle","ABC",1))
my tiABC title
(10) #split()
以指定字符為分割符,將字符串分割成列表,1代表只在第一個字符處分割
>>>print("My title title".split("i",1))
['My t', 'tle title']
----------------------------不常用函數(shù)-------------------------
(11)#?capitalize()
首字母大寫
>>>print("hello python".capitalize())
Hello python
(12) # startswith()
判斷是否以某個內(nèi)容開頭
>>>print("hello".startswith("hel"))
True
(13)#endswith()
判斷是否以某個內(nèi)容結尾
>>>print("Python".endswith("on"))
True
(14) #?expandtabs(tabsize=8)
在\t 處以tab鍵分隔,字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數(shù)是 8 。
>>>print("hello\tpython ".expandtabs(tabsize=20))
hello? ? ? ? ? ? ? ? ? ? ? ? ?python
(15) # index()
查找到第一個元素,并將索引值返回 找不到報錯
>>>print("hello".index("o"))
4
(16) #isalnum()
只能是字符或者數(shù)字,或者兩者的結合,不可以有特殊字符
>>>print("ABC".isalnum())
True
(17) # isdecimal()
判斷是否為十進制
>>>print('123456'.isdecimal())
True
(18) # isnumeric()
檢測字符串是否只由數(shù)字組成
>>>print('123456'.isnumeric())
True
(19) #? isidentifier()
檢測是否合法變量 True為合法 False為非法
>>>print("abc".isidentifier())
True
(20) # isspace()
檢測字符串是否全是空格
>>>print(" ".isspace())
True
(21) # istitle()
檢測字符串中每個單詞是否開頭大寫
>>>print("My title".istitle())
False
(22)#swapacase()
字符串中大小寫轉換
>>>print("MY title".swapcase())
my TITLE
(23) #ljust()
生成一個以指定字符串開頭的指定長度的字符串,缺少部分用‘*’在后補充
>>>print("My tltle".ljust(50,"*"))
My tltle******************************************
(24) # rjust()
生成一個以指定字符串開頭的指定長度的字符串,缺少部分用‘*’在前補充
>>>print("My title".rjust(50,"*"))
******************************************My title
(25)# lstrip()
去除字符串前的特殊字符
>>>print("\nhello\n".lstrip())
hello
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 字符串后的特殊字符并沒有去除,?這里是后面的換行符產(chǎn)生的空行
(26) # rstrip()
去除字符串后的特殊字符
>>>print("\nhello\n".rstrip())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??# 字符串前的特殊字符并沒有去除,?這里是后面的換行符產(chǎn)生的空行
hello?
(27) #? ?rfind()
?查找到最后一個元素,并將索引值返回 找不到返回-1
>>>print("My title title".rfind("t"))
11
(28) # title()
以首單詞格式修改后面單詞的格式
>>>print("My title title".title())
My Title Title? ? ?# 按照首單詞中首字母為大寫,所以后邊title的首字母也為大寫