Python-字符串

目錄: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的首字母也為大寫

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容