1.字符串概述
字符串是編程語言中的一種數據類型,Python當中字符串與其他語言中的字符串一樣,是一種強大的處理工具集,但與C語言不同的是,Python中沒有單個字符這種類型,取而代之的是只有一個字符的字符串類型。Python字符串被劃為了不可變序列這一類別,這意味著Python中的字符串存在從左到右的順序,且他們不可在原位置上修改。
2.一般的字符串
2.1字符串的定義
Python中字符串的定義可以用單引號、雙引號和三引號,,其中單雙引字符串是一樣的,可以通用,但三引號不同,三引號的字符串類似標注信息,可以用來說明代碼的用途,也可以在程序中運行。字符串定義的舉例:
>>
>
'abcd'
'abcd'
>>
>
"abcd"
'abcd'
>>
>
"""abcd"""
'abcd'
>>
>
'ab'
,
"cd"
(
'ab'
,
'cd'
)
>>
>
'ab"cd'
,
"ab'cd"
# 逗號隔開的字符串會形成一個元組
(
'ab"cd'
,
"ab'cd"
)
>>
>
title
=
'a'
"b"
'c'
#字符串會自動合并
>>
>
title
'abc'
2.2轉義字符串
在字符串中加入“\”可以嵌入一些特殊的字符,反斜杠會引入特殊的字節編碼,可以讓我們能在字符串中嵌入不容易使用鍵盤輸入的字符。Python中提供的一些轉義字符如下表,更多的考研參考一些Python教材:
轉義 | 說明 |
---|---|
\newline | 忽視(連續) |
\ \ | 反斜杠(\)) |
\ ’ | 單引號(‘) |
\ “ | 雙引號(“) |
\ n | 換行 |
2.3Raw字符串
Raw字符串會抑制轉義,可以用在不需要轉義的場景,比如通過字符串定位到文件并打開。舉例如下:
>>
>
path
=
'C:\new\text.dat'
>>
>
path
'C:\new\text.dat'
>>
>
print
(
path
)
C
:
ew ext
.
dat
>>
>
path
=
r
'C:\new\text.dat'
# Raw字符串抑制轉義
>>
>
print
(
path
)
C
:
\new\text
.
dat
2.4三重引號的字符串
又稱塊字符串,可以方便的寫出換行這種格式的字符串。
>>
>
txt
=
"""llllllll
... bbbbbbbb
... cccccccc
... """
>>
>
print
(
txt
)
llllllll
bbbbbbbb
cccccccc
3字符串的應用
3.1基本操作
>>
>
len
(
'abc'
)
# 求字符串的長度
3
>>
>
'abc'
+
'def'
# 字符串相加
'abcdef'
>>
>
'a'
*
4
# 重復字符的生成
'aaaa'
>>
>
'abc'
+
9
# 錯誤的使用
Traceback
(
most recent call last
)
:
File
"
"
,
line
1
,
in
<
module
>
TypeError
:
must be
str
,
not
int
>>
>
a
=
"hacker"
>>
>
'k'
in
a
True
>>
>
'ha'
in
a
True
注意,兩個字符串相加會生成一個新的字符串對象,同時字符串相加不允許字符串加數字等樣式的操作出現。字符串是可迭代對象,故可以使用“in”。
3.2索引和分片
Python中的偏移量是從0開始的,字符串中每一個字符都有其對應的索引值,其功能的使用與列表和元組類似分片一般可以有三個參數,比如S[a?c],a是起始索引,b是結束索引,c是分片步長。
>>
>
s
=
"spark"
>>
>
s
[
1
]
# 按索引取值
'p'
>>
>
s
[
-
2
]
# 取倒數第二個字符
'r'
>>
>
s
[
1
:
3
]
,
s
[
1
:
]
,
s
[
:
-
1
]
# 字符串的分片
(
'pa'
,
'park'
,
'spar'
)
>>
>
s
[
:
:
-
1
]
# 分片的逆序用法
'kraps'
3.3修改字符串
不能原地修改一個字符串,因為字符串是不可變序列。
>>
>
s
=
"abcde"
>>
>
s
[
0
]
=
b
Traceback
(
most recent call last
)
:
File
"
"
,
line
1
,
in
<
module
>
NameError
:
name
'b'
is
not
defined
需要修改時可以嘗試使用字符串的拼接(字符串變長)或者分片(字符串變短)來實現,而需要改變字符串的某個位置的字符時可以考慮使用replace方法來替換。
>>
>
a
=
"abcdefg"
>>
>
b
=
a
+
"hijklmn"
>>
>
b
'abcdefghijklmn'
>>
>
c
=
a
[
:
3
]
>>
>
c
'abc'
>>
>
b
=
a
.
replace
(
'a'
,
'pp'
)
# replace方法會生成新的字符串對象
>>
>
b
'ppbcdefg'
>>
>
a
# 原字符串不變
'abcdefg'
3.4常用的字符串方法
replace(a,b) 方法,將字符串中的子字符串a替換為b。
>>
>
a
=
"abcdefga"
>>
>
b
=
a
.
replace
(
'a'
,
'pp'
)
>>
>
b
'ppbcdefgpp'
find(a) 方法返回子字符串a第一次出現的偏移量,如果沒有子串a,返回-1。
>>
>
a
=
"abcdefga"
>>
>
a
.
find
(
"abc"
)
0
>>
>
a
.
find
(
"bcd"
)
1
>>
>
a
.
find
(
"abd"
)
-
1
>>
>
a
.
find
(
"asfjlkfsjdafkdjfkaj"
)
-
1
list(s) 方法,將字符串s轉換為列表。
>>
>
a
=
"abcdefga"
>>
>
list
(
a
)
[
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
,
'g'
]
join(s) 方法,將列表s轉換為字符串。join為字符串的拼接方法,需要直接作用于字符串上,比如m為字符串,m.join(s)的作用是將s列表中所有的子串以m為分隔拼接起來。
>>
>
a
=
"abcdefga"
>>
>
b
=
list
(
a
)
>>
>
b
[
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
,
'g'
]
>>
>
''
.
join
(
b
)
'abcdefg'
>>
>
' '
.
join
(
b
)
'a b c d e f g'
>>
>
'AABB'
.
join
(
b
)
'aAABBbAABBcAABBdAABBeAABBfAABBg'
split(a) 方法,按照a的方式分割字符串,將分割出來的子串保存到一個列表中,a可以省略,默認按空格分割。
>>
>
a
=
"abc bcd cde"
>>
>
a
.
split
(
)
[
'abc'
,
'bcd'
,
'cde'
]
>>
>
a
.
split
(
" "
)
[
'abc'
,
'bcd'
,
'cde'
]
>>
>
b
=
"abc,def,g"
>>
>
b
.
split
(
','
)
[
'abc'
,
'def'
,
'g'
]
其他方法的使用:
>>
>
a
=
"The knights who say Ni\n"
>>
>
a
.
rstrip
(
)
# 去除字符串末尾的換行符
'The knights who say Ni'
>>
>
a
.
upper
(
)
# 字符串轉換為大寫字母
'THE KNIGHTS WHO SAY NI\n'
>>
>
a
.
endswith
(
'\n'
)
# 檢測結尾字符串
True
>>
>
a
.
startswith
(
'The'
)
# 檢測起始字符串
True
更多的其他字符串方法,可以參考Python的開發手冊。
3.5字符串的格式化表達
%s % n 樣式。這種樣式常見于輸出時傳入變量的情況,與C語言類似。
>>
>
"That is %d %s girl"
%
(
1
,
"nice"
)
'That is 1 nice girl'
%()s % {} 樣式,基于字典的字符串格式化。
>>
>
"That is %(n)d %(x)s girl"
%
{
'n'
:
1
,
'x'
:
"nice"
}
'That is 1 nice girl'
>>
>
format 方法。
>>
>
"That is {} {} girl"
.
format
(
1
,
"nice"
)
'That is 1 nice girl'
>>
>
"That is {0} {1} girl"
.
format
(
1
,
"nice"
)
'That is 1 nice girl'
>>
>
"That is {1} {0} girl"
.
format
(
1
,
"nice"
)
# 可以標注數字打亂順序,0所指代的是format中第一個未命名的參數
'That is nice 1 girl'
>>
>
"That is {0} {n} girl"
.
format
(
1
,
n
=
"nice"
)
# 也可以給format的參數取名,這樣可以不按照順序來
'That is 1 nice girl'
推薦使用format來格式化字符串。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
