目錄blog:https://www.cnblogs.com/Rohn
Tips:本文中代碼均使用
3.8.x版本的Python,部分文字來自網路,侵刪,
- 字串
- 轉義
- 按下標取值
- 切片
- 長度
- in和not in
- 跨行連續輸入
- 拼接
- 字串的方法
- 轉換大小寫
- 判斷大小寫
- isX字串方法
- 判斷開始的字串和結束的字串
- 字串連接
- 字串分割
- 對齊文本
- 洗掉空白字符
- 替換字串
- 字串格式化
- f-string
- 常見問題解決方案
- 使用多個界定符分割字串
- 問題
- 解決方案
- 知識點補充:re.split()方法
- 使用多個界定符分割字串
字串
字串:一個有序的字符集合,用來存盤和表現基于文本的資訊,要求使用單引號或雙引號括起來,使用雙引號的一個好處,就是字串中可以使用單引號字符,例如:
>>> a="I'm a dog."
>>> a
"I'm a dog."
>>> a='I'm a dog.'
File "<stdin>", line 1
a='I'm a dog.'
^
SyntaxError: invalid syntax
字串是“不可變的”,它不能被更改,嘗試對字串中的一個字符重新賦值,將導致TypeError錯誤,例如:
>>> a=r"It's a cat"
>>> a[5]='an'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
轉義
反斜杠\可以用來轉義
>>> 'desn't'
File "<stdin>", line 1
'desn't'
^
SyntaxError: invalid syntax
>>> 'desn\'t'
"desn't"
如果你不希望前置了\的字符轉義成特殊字符,可以使用原始字串 方式,在引號前添加r即可:
>>> print('C:\some\name')
C:\some
ame
>>> print(r'C:\some\name')
C:\some\name
按下標取值
字串是可以被索引(下標訪問)的,第一個字符索引是0,單個字符并沒有特殊的型別,只是一個長度為一的字串,
>>> a="hello world!"
>>> a[1]
'e'
>>> a[5]
' '
切片
>>> a="hello world!"
>>> a[3:7]
'lo w'
長度
>>> a="hello world!"
>>> len(a)
12
in和not in
>>> a="hello world!"
>>> 'a' in a
False
>>> 'e' in a
True
>>> 'a' not in a
True
跨行連續輸入
字串字面值可以跨行連續輸入,一種方式是用三重引號:"""..."""或'''...''',字串中的回車換行會自動包含到字串中,如果不想包含,在行尾添加一個\即可,
>>> print("""\
... Usage: thingy [OPTIONS]
... -h Display this usage message
... -H hostname Hostname to connect to
... """)
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
拼接
字串可以用+進行連接,也可以用*進行重復,
>>> a='haha'
>>> b='lala'
>>> a+b
'hahalala'
>>> a*3
'hahahahahaha'
相鄰的兩個或多個字串字面值(引號引起來的字符)將會自動連接到一起,
>>> 'hi''story'
'history'
# 只能對兩個字面值這樣操作,變數或運算式不行
>>> c='hi'
>>> c'story'
File "<stdin>", line 1
c'story'
^
SyntaxError: invalid syntax
# 如果想連接變數,或者連接變數和字面值,可以用 + 號
>>> c+'story'
'history'
字串的方法
轉換大小寫
upper()和lower()字串方法回傳一個新字串,其中原字串的所有字母都被相應地轉換為大寫或小寫,字串中非字母字符保持不變,
>>> a = 'Hello world!'
>>> a.upper()
'HELLO WORLD!'
>>> a.lower()
'hello world!'
Tips:這些方法沒有改變字串本身, 而是回傳一個新字串,如果你希望改變原來的字串, 就必須在該字串上呼叫
upper()或lower(),然后將這個新字串賦給保存原來字串的變數,如a=a.upper(),
判斷大小寫
如果字串至少有一個字母, 并且所有字母都是大寫或小寫,isupper()和islower()方法就會相應地回傳布林值True,否則, 該方法回傳False,
>>> a = 'Hello world!'
>>> a.isupper()
False
>>> a.islower()
False
>>> b='a dog'
>>> b.islower()
True
>>> b.isupper()
False
>>> c='AAA'
>>> c.isupper()
True
>>> c.islower()
False
isX字串方法
除了islower()和isupper(), 還有幾個字串方法,它們的名字以is開始,下面是一些常用的isX字串方法:
isalpha()回傳True,如果字串只包含字母,并且非空;isalnum()回傳True,如果字串只包含字母和數字,并且非空;isdecimal()回傳True,如果字串只包含數字字符,并且非空;isspace()回傳True,如果字串只包含空格、制表符和換行,并且非空;istitle()回傳True,如果字串僅包含以大寫字母開頭、后面都是小寫字母的單詞;
判斷開始的字串和結束的字串
startswith()和endswith()方法回傳True,如果它們所呼叫的字串以該方法傳入的字串開始或結束,否則,方法回傳False,
>>> a="I'm a dog."
>>> a.startswith("I'm")
True
>>> a.startswith("you")
False
>>> a.endswith("dog.")
True
>>> a.endswith("cat.")
False
字串連接
如果有一個字串串列,需要將它們連接起來,成為一個單獨的字串,join()方法就很有用,join()方法在一個字串上呼叫,引數是一個字串串列,回傳一個字串,回傳的字串由傳入的串列中每個字串連接而成,
>>> ','.join(['dog','cat','fish'])
'dog,cat,fish'
>>> ' '.join(['dog','cat','fish'])
'dog cat fish'
字串分割
split()方法針對一個字串呼叫,回傳一個字串串列,
>>> "I'm a dog".split()
["I'm", 'a', 'dog']
對齊文本
rjust()和ljust()字串方法回傳呼叫它們的字串的填充版本,通過插入空格來對齊文本,這兩個方法的第一個引數是一個整數長度,用于對齊字串,
>>> 'dog'.rjust(10)
' dog'
>>> 'dog'.ljust(10)
'dog '
rjust()和ljust()方法的第二個可選引數將指定一個填充字符,取代空格字符,
>>> 'dog'.rjust(10,'*')
'*******dog'
center()字串方法與ljust()與rjust()類似,但它讓文本居中,而不是左對齊或右對齊,
>>> 'dog'.center(20,'=')
'========dog========='
洗掉空白字符
strip()字串方法將回傳一個新的字串,它的開頭或末尾都沒有空白字符,lstrip()和rstrip()方法將相應洗掉左邊或右邊的空白字符,
>>> a = ' Hello World '
>>> a.strip()
'Hello World'
>>> a.lstrip()
'Hello World '
>>> a.rstrip()
' Hello World'
替換字串
replace()方法把字串中的old(舊字串) 替換成 new(新字串),如果指定第三個引數max,則替換不超過max 次,
語法格式如下:
str.replace(old, new[, max])
例如:
>>> text = 'ok!ok!are you ok?'
>>> text.replace('ok!','no!')
'no!no!are you ok?'
字串格式化
字串格式化目前有三種方式,分別為占位符(%)、format、f-string,
f-string
在Python3.6中,引入了一種新的格式化字串的方法:f-string,相比占位符和format,f-string更加方便簡單,
f-string是指以F或f為前綴的字串,例如:
>>> length = 30
>>> width = 15
>>> f'矩形的長為{length}cm,寬為{width}cm,面積為{length*width}'
'矩形的長為30cm,寬為15從cm,面積為450'
>>> F'矩形的長為{length}cm,寬為{width}cm,面積為{length*width}'
'矩形的長為30cm,寬為15從cm,面積為450'
3.8版本又引入一個=符號,例如:
>>> f'矩形{length=}cm,{width=}cm,面積為{length*width}'
'矩形length=30cm,width=15cm,面積為450'
常見問題解決方案
使用多個界定符分割字串
問題
你需要將一個字串分割為多個欄位,但是分隔符(還有周圍的空格)并不是固定的,
解決方案
string 物件的 split() 方法只適應于非常簡單的字串分割情形, 它并不允許有多個分隔符或者是分隔符周圍不確定的空格, 當你需要更加靈活的切割字串的時候,最好使用 re.split() 方法:
>>> line = 'asfaf dg;gdg,ddggd,hfhh;gddd gg'
>>> import re
>>> re.split(r'[;,\s]\s*',line)
['asfaf', 'dg', 'gdg', 'ddggd', 'hfhh', 'gddd', 'gg']
知識點補充:re.split()方法
語法格式:
import re
# maxsplit是分離的次數,maxsplit=1分離一次,默認為0,不限制次數,
re.split(pattern, string, maxsplit=0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/115650.html
標籤:Python
上一篇:14.DRF-決議器
