新聞中心
Python3 字符串
字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號(hào)( ' 或 " )來(lái)創(chuàng)建字符串。

創(chuàng)建字符串很簡(jiǎn)單,只要為變量分配一個(gè)值即可。例如:
var1
=
'
Hello World!
'
var2
=
"
Runoob
"
Python 訪問(wèn)字符串中的值
Python 不支持單字符類型,單字符在 Python 中也是作為一個(gè)字符串使用。
Python 訪問(wèn)子字符串,可以使用方括號(hào) [] 來(lái)截取字符串,字符串的截取的語(yǔ)法格式如下:
變量[頭下標(biāo):尾下標(biāo)]
索引值以 0 為開始值,-1 為從末尾的開始位置。
如下實(shí)例:
實(shí)例(Python 3.0+)
#!/usr/bin/python3
var1
=
'
Hello World!
'
var2
=
"
Runoob
"
print
(
"
var1[0]:
"
,
var1
[
0
]
)
print
(
"
var2[1:5]:
"
,
var2
[
1
:
5
]
)
以上實(shí)例執(zhí)行結(jié)果:
var1[0]: H var2[1:5]: unoo
Python 字符串更新
你可以截取字符串的一部分并與其他字段拼接,如下實(shí)例:
實(shí)例(Python 3.0+)
#!/usr/bin/python3
var1
=
'
Hello World!
'
print
(
"
已更新字符串 :
"
,
var1
[
:
6
]
+
'
Runoob!
'
)
以上實(shí)例執(zhí)行結(jié)果
已更新字符串 : Hello Runoob!
Python 轉(zhuǎn)義字符
在需要在字符中使用特殊字符時(shí),python 用反斜杠 \ 轉(zhuǎn)義字符。如下表:
| 轉(zhuǎn)義字符 | 描述 | 實(shí)例 |
|---|---|---|
| \(在行尾時(shí)) | 續(xù)行符 |
>>> print("line1 \
... line2 \
... line3")
line1 line2 line3
>>>
|
| \\ | 反斜杠符號(hào) | >>> print("\\")
\
|
| \' | 單引號(hào) |
>>> print('\'')
'
|
| \" | 雙引號(hào) | >>> print("\"")
"
|
| \a | 響鈴 | >>> print("\a")執(zhí)行后電腦有響聲。 |
| \b | 退格(Backspace) | >>> print("Hello \b World!")
Hello World!
|
| \000 | 空 | >>> print("\000")
>>>
|
| \n | 換行 | >>> print("\n")
>>>
|
| \v | 縱向制表符 | >>> print("Hello \v World!")
Hello
World!
>>>
|
| \t | 橫向制表符 | >>> print("Hello \t World!")
Hello World!
>>>
|
| \r | 回車,將 \r 后面的內(nèi)容移到字符串開頭,并逐一替換開頭部分的字符,直至將 \r 后面的內(nèi)容完全替換完成。 | >>> print("Hello\rWorld!")
World!
>>> print('google runoob taobao\r123456')
123456 runoob taobao
|
| \f | 換頁(yè) | >>> print("Hello \f World!")
Hello
World!
>>>
|
| \yyy | 八進(jìn)制數(shù),y 代表 0~7 的字符,例如:\012 代表?yè)Q行。 | >>> print("\110\145\154\154\157\40\127\157\162\154\144\41")
Hello World!
|
| \xyy | 十六進(jìn)制數(shù),以 \x 開頭,y 代表的字符,例如:\x0a 代表?yè)Q行 | >>> print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")
Hello World!
|
| \other | 其它的字符以普通格式輸出 |
使用 \r 實(shí)現(xiàn)百分比精度:
實(shí)例
import
time
for i
in
range
(
101
):
print
(
"\r{:3}%".
format
(i
)
,end
=
' '
)
time.
sleep
(
0.05
)
以下實(shí)例,我們使用了不同的轉(zhuǎn)義字符來(lái)演示單引號(hào)、換行符、制表符、退格符、換頁(yè)符、ASCII、二進(jìn)制、八進(jìn)制數(shù)和十六進(jìn)制數(shù)的效果:
實(shí)例
print
(
'\'Hello, world!\''
)
# 輸出:'Hello, world!'
print
(
"Hello, world!\nHow are you?"
)
# 輸出:Hello, world!
# How are you?
print
(
"Hello, world!\tHow are you?"
)
# 輸出:Hello, world! How are you?
print
(
"Hello,\b world!"
)
# 輸出:Hello world!
print
(
"Hello,\f world!"
)
# 輸出:
# Hello,
# world!
print
(
"A 對(duì)應(yīng)的 ASCII 值為:"
,
ord
(
'A'
)
)
# 輸出:A 對(duì)應(yīng)的 ASCII 值為: 65
print
(
"\x41 為 A 的 ASCII 代碼"
)
# 輸出:A 為 A 的 ASCII 代碼
decimal_number
=
42
binary_number
= bin
(decimal_number
)
# 十進(jìn)制轉(zhuǎn)換為二進(jìn)制
print
(
'轉(zhuǎn)換為二進(jìn)制:'
, binary_number
)
# 轉(zhuǎn)換為二進(jìn)制: 0b101010
octal_number
=
oct
(decimal_number
)
# 十進(jìn)制轉(zhuǎn)換為八進(jìn)制
print
(
'轉(zhuǎn)換為八進(jìn)制:'
, octal_number
)
# 轉(zhuǎn)換為八進(jìn)制: 0o52
hexadecimal_number
=
hex
(decimal_number
)
# 十進(jìn)制轉(zhuǎn)換為十六進(jìn)制
print
(
'轉(zhuǎn)換為十六進(jìn)制:'
, hexadecimal_number
)
# 轉(zhuǎn)換為十六進(jìn)制: 0x2a
Python 字符串運(yùn)算符
下表實(shí)例變量 a 值為字符串 "Hello",b 變量值為 "Python":
| 操作符 | 描述 | 實(shí)例 |
|---|---|---|
| + | 字符串連接 | a + b 輸出結(jié)果: HelloPython |
| * | 重復(fù)輸出字符串 | a*2 輸出結(jié)果:HelloHello |
| [] | 通過(guò)索引獲取字符串中字符 | a[1] 輸出結(jié)果 e |
| [ : ] | 截取字符串中的一部分,遵循左閉右開原則,str[0:2] 是不包含第 3 個(gè)字符的。 | a[1:4] 輸出結(jié)果 ell |
| in | 成員運(yùn)算符 - 如果字符串中包含給定的字符返回 True | 'H' in a 輸出結(jié)果 True |
| not in | 成員運(yùn)算符 - 如果字符串中不包含給定的字符返回 True | 'M' not in a 輸出結(jié)果 True |
| r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來(lái)使用,沒(méi)有轉(zhuǎn)義特殊或不能打印的字符。 原始字符串除在字符串的第一個(gè)引號(hào)前加上字母 r(可以大小寫)以外,與普通字符串有著幾乎完全相同的語(yǔ)法。 | print( r'\n' ) print( R'\n' ) |
| % | 格式字符串 | 請(qǐng)看下一節(jié)內(nèi)容。 |
實(shí)例(Python 3.0+)
#!/usr/bin/python3
a
=
"
Hello
"
b
=
"
Python
"
print
(
"
a + b 輸出結(jié)果:
"
,
a
+
b
)
print
(
"
a * 2 輸出結(jié)果:
"
,
a
*
2
)
print
(
"
a[1] 輸出結(jié)果:
"
,
a
[
1
]
)
print
(
"
a[1:4] 輸出結(jié)果:
"
,
a
[
1
:
4
]
)
if
(
"
H
"
in
a
)
:
print
(
"
H 在變量 a 中
"
)
else
:
print
(
"
H 不在變量 a 中
"
)
if
(
"
M
"
not
in
a
)
:
print
(
"
M 不在變量 a 中
"
)
else
:
print
(
"
M 在變量 a 中
"
)
print
(
r
'
\n
'
)
print
(
R
'
\n
'
)
以上實(shí)例輸出結(jié)果為:
a + b 輸出結(jié)果: HelloPython a * 2 輸出結(jié)果: HelloHello a[1] 輸出結(jié)果: e a[1:4] 輸出結(jié)果: ell H 在變量 a 中 M 不在變量 a 中 \n \n
Python 字符串格式化
Python 支持格式化字符串的輸出 。盡管這樣可能會(huì)用到非常復(fù)雜的表達(dá)式,但最基本的用法是將一個(gè)值插入到一個(gè)有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用與 C 中 sprintf 函數(shù)一樣的語(yǔ)法。
實(shí)例(Python 3.0+)
#!/usr/bin/python3
print
(
"
我叫 %s 今年 %d 歲!
"
%
(
'
小明
'
,
10
)
)
以上實(shí)例輸出結(jié)果:
我叫 小明 今年 10 歲!
python字符串格式化符號(hào):
| 符 號(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ù)(大寫) |
| %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)寫 |
| %G | %f 和 %E 的簡(jiǎn)寫 |
| %p | 用十六進(jìn)制數(shù)格式化變量的地址 |
格式化操作符輔助指令:
| 符號(hào) | 功能 |
|---|---|
| * | 定義寬度或者小數(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ù)(如果可用的話) |
Python2.6 開始,新增了一種格式化字符串的函數(shù) ,它增強(qiáng)了字符串格式化的功能。
Python三引號(hào)
python三引號(hào)允許一個(gè)字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。實(shí)例如下
實(shí)例(Python 3.0+)
#!/usr/bin/python3
para_str
=
"""
這是一個(gè)多行字符串的實(shí)例 多行字符串可以使用制表符 TAB (
\t
)。 也可以使用換行符 [
\n
]。
"""
print
(
para_str
)
以上實(shí)例執(zhí)行結(jié)果為:
這是一個(gè)多行字符串的實(shí)例 多行字符串可以使用制表符 TAB ( )。 也可以使用換行符 [ ]。
三引號(hào)讓程序員從引號(hào)和特殊字符串的泥潭里面解脫出來(lái),自始至終保持一小塊字符串的格式是所謂的WYSIWYG(所見即所得)格式的。
一個(gè)典型的用例是,當(dāng)你需要一塊HTML或者SQL時(shí),這時(shí)用字符串組合,特殊字符串轉(zhuǎn)義將會(huì)非常的繁瑣。
errHTML
=
'''
ERROR
%s
'''
cursor
.
execute
(
'''
CREATE TABLE users ( login VARCHAR(8), uid INTEGER, prid INTEGER)
'''
)
f-string
f-string 是 python3.6 之后版本添加的,稱之為字面量格式化字符串,是新的格式化字符串的語(yǔ)法。
之前我們習(xí)慣用百分號(hào) (%):
實(shí)例
>>> name
=
'Runoob'
>>>
'Hello %s' % name
'Hello Runoob'
f-string 格式化字符串以 f 開頭,后面跟著字符串,字符串中的表達(dá)式用大括號(hào) {} 包起來(lái),它會(huì)將變量或表達(dá)式計(jì)算后的值替換進(jìn)去,實(shí)例如下:
實(shí)例
>>> name
=
'Runoob'
>>> f
'Hello {name}'
# 替換變量
'Hello Runoob'
>>> f
'{1+2}'
# 使用表達(dá)式
'3'
>>> w
=
{
'name':
'Runoob'
,
'url':
'www.runoob.com'
}
>>> f
'{w["name"]}: {w["url"]}'
'Runoob: www.runoob.com'
用了這種方式明顯更簡(jiǎn)單了,不用再去判斷使用 %s,還是 %d。
在 Python 3.8 的版本中可以使用 = 符號(hào)來(lái)拼接運(yùn)算表達(dá)式與結(jié)果:
實(shí)例
>>> x
=
1
>>>
print
(f
'{x+1}'
)
# Python 3.6
2
>>> x
=
1
>>>
print
(f
'{x+1=}'
)
# Python 3.8
x+
1
=
2
Unicode 字符串
在Python2中,普通字符串是以8位ASCII碼進(jìn)行存儲(chǔ)的,而Unicode字符串則存儲(chǔ)為16位unicode字符串,這樣能夠表示更多的字符集。使用的語(yǔ)法是在字符串前面加上前綴 u。
在Python3中,所有的字符串都是Unicode字符串。
Python 的字符串內(nèi)建函數(shù)
Python 的字符串常用內(nèi)建函數(shù)如下:
| 序號(hào) | 方法及描述 |
|---|---|
| 1 | 將字符串的第一個(gè)字符轉(zhuǎn)換為大寫 |
| 2 | 返回一個(gè)指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認(rèn)為空格。 |
| 3 | 返回 str 在 string 里面出現(xiàn)的次數(shù),如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù) |
| 4 | Python3 中沒(méi)有 decode 方法,但我們可以使用 bytes 對(duì)象的 decode() 方法來(lái)解碼給定的 bytes 對(duì)象,這個(gè) bytes 對(duì)象可以由 str.encode() 來(lái)編碼返回。 |
| 5 | 以 encoding 指定的編碼格式編碼字符串,如果出錯(cuò)默認(rèn)報(bào)一個(gè)ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
| 6 | 檢查字符串是否以 suffix 結(jié)束,如果 beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 suffix 結(jié)束,如果是,返回 True,否則返回 False。 |
| 7 | 把字符串 string 中的 tab 符號(hào)轉(zhuǎn)為空格,tab 符號(hào)默認(rèn)的空格數(shù)是 8 。 |
| 8 | 檢測(cè) str 是否包含在字符串中,如果指定范圍 beg 和 end ,則檢查是否包含在指定范圍內(nèi),如果包含返回開始的索引值,否則返回-1 |
| 9 | 跟find()方法一樣,只不過(guò)如果str不在字符串中會(huì)報(bào)一個(gè)異常。 |
| 10 | 如果字符串至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返 回 True,否則返回 False |
| 11 | 如果字符串至少有一個(gè)字符并且所有字符都是字母或中文字則返回 True, 否則返回 False |
| 12 | 如果字符串只包含數(shù)字則返回 True 否則返回 False.. |
| 13 | 如果字符串中包含至少一個(gè)區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回 True,否則返回 False |
| 14 | 如果字符串中只包含數(shù)字字符,則返回 True,否則返回 False |
| 15 | 如果字符串中只包含空白,則返回 True,否則返回 False. |
| 16 | 如果字符串是標(biāo)題化的(見 title())則返回 True,否則返回 False |
| 17 | 如果字符串中包含至少一個(gè)區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True,否則返回 False |
| 18 | 以指定字符串作為分隔符,將 seq 中所有的元素(的字符串表示)合并為一個(gè)新的字符串 |
| 19 | 返回字符串長(zhǎng)度 |
| 20 | 返回一個(gè)原字符串左對(duì)齊,并使用 fillchar 填充至長(zhǎng)度 width 的新字符串,fillchar 默認(rèn)為空格。 |
| 21 | 轉(zhuǎn)換字符串中所有大寫字符為小寫. |
| 22 | 截掉字符串左邊的空格或指定字符。 |
| 23 | 創(chuàng)建字符映射的轉(zhuǎn)換表,對(duì)于接受兩個(gè)參數(shù)的最簡(jiǎn)單的調(diào)用方式,第一個(gè)參數(shù)是字符串,表示需要轉(zhuǎn)換的字符,第二個(gè)參數(shù)也是字符串表示轉(zhuǎn)換的目標(biāo)。 |
| 24 | 返回字符串 str 中最大的字母。 |
| 25 | 返回字符串 str 中最小的字母。 |
| 26 | 把 將字符串中的 old 替換成 new,如果 max 指定,則替換不超過(guò) max 次。 |
| 27 | 類似于 find()函數(shù),不過(guò)是從右邊開始查找. |
| 28 | 類似于 index(),不過(guò)是從右邊開始. |
| 29 | 返回一個(gè)原字符串右對(duì)齊,并使用fillchar(默認(rèn)空格)填充至長(zhǎng)度 width 的新字符串 |
| 30 | 刪除字符串末尾的空格或指定字符。 |
| 31 | 以 str 為分隔符截取字符串,如果 num 有指定值,則僅截取 num+1 個(gè)子字符串 |
| 32 | 按照行('\r', '\r\n', \n')分隔,返回一個(gè)包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符,如果為 True,則保留換行符。 |
| 33 | 檢查字符串是否是以指定子字符串 substr 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內(nèi)檢查。 |
| 34 | 在字符串上執(zhí)行 lstrip()和 rstrip() |
| 35 | 將字符串中大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫 |
| 36 | 返回"標(biāo)題化"的字符串,就是說(shuō)所有單詞都是以大寫開始,其余字母均為小寫(見 istitle()) |
| 37 | 根據(jù) table 給出的表(包含 256 個(gè)字符)轉(zhuǎn)換 string 的字符, 要過(guò)濾掉的字符放到 deletechars 參數(shù)中 |
| 38 | 轉(zhuǎn)換字符串中的小寫字母為大寫 |
| 39 | 返回長(zhǎng)度為 width 的字符串,原字符串右對(duì)齊,前面填充0 |
| 40 | 檢查字符串是否只包含十進(jìn)制字符,如果是返回 true,否則返回 false。 |
分享標(biāo)題:Python3字符串
瀏覽地址:http://www.5511xx.com/article/coeoehi.html


咨詢
建站咨詢
