一次性匯總了 30+ 字符串常用處理方法
今天這篇推文我們就匯總下Python中常用的字符串處理小技巧,字符串在Python數(shù)據(jù)處理中是非常常見且極易忽略的常用數(shù)據(jù)類型,且Python本身也提供大量運算符、函數(shù)和方法來處理字符串。話不多說,接下來我們就匯總下字符串處理小技巧(ps:都是小編經(jīng)常用到的處理技巧,可能不是很全哦)
字符串常用操作
1、+ 操作
這個操作相對簡單,就是對字符串進(jìn)行組合,如下:
a?=?"Data"
b?=?"Charm"
print(a+b)?
#?DataCharm
2、* 操作
* 操作一般都是重復(fù)字符串的個數(shù),舉例如下:
a="DataCharm"
print(a*3)
#?DataCharmDataCharmDataCharm
3、in 操作
這個操作在我的數(shù)據(jù)處理過程中經(jīng)常使用到,用于判斷某個字符是否在指定的字符串中,進(jìn)而進(jìn)行下一步的操作,這個和pandas數(shù)據(jù)篩選結(jié)合使用,可以快速選擇出對應(yīng)的數(shù)據(jù)。
s?=?"DataCharm"
print(s?in?"The?best?place?to?learn?Python?is?DataCharm")
#True
根據(jù)返回的 True 或False 結(jié)果就可以靈活進(jìn)數(shù)據(jù)判斷和數(shù)據(jù)選擇了(結(jié)合pandas布爾類型),而 not in 則是 in 的反操作,其他都是一樣的。
4、[] 和[:] 通過索引獲取字符串中字符
這兩個字符串操作是使用頻次較多的操作了:
[] 可通過具體的索引號選擇字符串中的字符;
[:] 可以拆分字符串,進(jìn)而獲取字符串中的一部分。
下面我們通過具體例子進(jìn)講解,首先,有字符串如下(標(biāo)注了索引號和反索引號,注意:python正序索引是從0開始,倒序索引從-1開始)

接下來的內(nèi)容我們將直接通過代碼進(jìn)行展示:
正序取數(shù)
s?=?"DataCharm"
s[0]
#'D'
s[1]
#'a'
#?一旦取值超過索引范圍,則會顯示出錯,如下:
s[9]
#IndexError:?string?index?out?of?range
倒序取數(shù)
s?=?"DataCharm"
s[-1]
#'m'
字符串的切片處理這一部分為字符串常用部分,希望小伙伴們可以仔細(xì)閱讀理解
s?=?"DataCharm"
s[0:4]
#'Data'
s[:4]
#'Data'
還可以:
s[:4]?+?s[4:]
#'DataCharm'
s[:4]?+?s[4:]?==?s
#True
對于倒序:
s?=?"DataCharm"
s[-5:-2]
#'Cha'
#相當(dāng)于正序取數(shù)如下:
s[4:7]
#'Cha'
s[-5:-2]?==?s[4:7]
#True
切片中我們還可以指定步長
s?=?"DataCharm"
s[0:6:2]?#?索引位置0~5,每隔1個進(jìn)行取數(shù)
#'DtC'
將第一個和第二個索引可以省略,并且分別默認(rèn)為第一個和最后一個字符:
s?=?"DataCharm"
s[::2]#?忽略第一個和第二個索引
#?'DtCam'
s[2::2]#?忽略第二個索引,默認(rèn)為最后一個字符
#?'tCam'
指定一個負(fù)的步長,這種情況下,字符串將倒序取值,且第一個索引應(yīng)大于第二個索引:
s?=?"DataCharm"
s[9:0:-2]
#?'maCt'
s[::-2]
#?'maCtD'
當(dāng)設(shè)置為-1時,則將原字符串進(jìn)行反轉(zhuǎn),這也是較常用的操作之一哦,如下:
s?=?"DataCharm"
s[::-1]
#?'mrahCataD'
字符串常用內(nèi)置方法
python 字符串操作內(nèi)置了許多處理方法,這里我們只列舉出我在實際使用中常用的的內(nèi)置方法。
s.capitalize():把字符串的第一個字符大寫,其他字符串小寫
s?=?"dataCharm"
s.capitalize()
#'Datacharm'
s.lower():轉(zhuǎn)換 string 中所有大寫字符為小寫
s?=?"DataCharm"
s.lower()
#'datacharm'
s.swapcase():將字符串中大寫的變小寫,小寫的變大寫
s?=?"DataCharm"
s.swapcase()?
#?'dATAcHARM'
s.title():將所有單詞都是以大寫開始,其余字母均為小寫
s?=?"data?charm"
s.title()
#'Data?Charm'
s.upper():將 string 中的小寫字母為大寫
s?=?"datacharm"
s.upper()
#'DATACHARM'
s.endswith(obj)和 s.startswith(obj):檢查字符串是否是以 obj 開頭(開頭),是則返回 True,否則返回 False
這兩個字符串內(nèi)置方法為常用方法,特別是數(shù)據(jù)選擇過程中,當(dāng)然和pandas結(jié)合,實現(xiàn)高效取數(shù)。
s?=?"DataCharm"
s.startswith("Data")
#True
s.endswith("Data")
#False
s.strip([chars])、 s.lstrip([chars])和 s.rstrip([chars]):刪除 string 字符串開頭和結(jié)尾、開頭、結(jié)尾的指定的字符(chars)(默認(rèn)為空格)
該方法為較常使用在數(shù)據(jù)清洗過程中,如爬取的字符串?dāng)?shù)據(jù)需要去除多余空格。
s?=?"?DataCharm?"
s.strip()
#'DataCharm'
s.lstrip()
#'DataCharm?'
s.rstrip()
#'?DataCharm'
s.find(str, beg=0, end=len(s)):檢測str是否包含在s 中,如果在 beg 和 end 指定范圍,則檢查是否包含在指定范圍內(nèi),如果是返回開始的索引值,否則返回-1。
s.count(str, beg=0, end=len(s)):返回 str 在 s 里面出現(xiàn)的次數(shù),如果 在beg 或者 end 指定指定范圍內(nèi),則返回 str 出現(xiàn)的次數(shù)
s.split("str"):以指定字符(str)分割字符串,返回多個字符串組成的列表。
字符串和列表之間的轉(zhuǎn)換
這個小技巧也是我在數(shù)據(jù)處理過程中經(jīng)常使用的,所以單獨進(jìn)行講解。
將列表轉(zhuǎn)換成字符串,我們可以使用 .join() 方法操作
list_test?=?['foo',?'bar',?'baz',?'qux']
str_from_list?=?"?".join(list_test)
str_from_list
#?'foo?bar?baz?qux'
type(str_from_list)
#?str
將字符串轉(zhuǎn)換成列表,則直接使用s.split()方法即可
str_test?=?"foo?bar?baz?qux"
list_from_str?=?str_test.split("?")
list_from_str
#['foo',?'bar',?'baz',?'qux']
type(list_from_str)
#list
字符串格式化處理
這里建議大家使用str.format() 方法進(jìn)行字符串格式化輸出。str.format()基本格式為
"xxx{?}xxx".format(參數(shù))
這里我們列出幾種常見的形式,具體詳細(xì)的大家可自行搜索(主要是太多,我列出常用的幾個即可)
#方式一:
'{0},?{1},?{2}'.format('a',?'b',?'c')
#方式二:
'{},?{},?{}'.format('a',?'b',?'c')
指定數(shù)字類型
b: 輸出整數(shù)的二進(jìn)制方式;
c: 輸出整數(shù)對應(yīng)的Unicode字符;
d: 輸出整數(shù)的十進(jìn)制方式;
o: 輸出整數(shù)的八進(jìn)制方式;
x: 輸出整數(shù)的小寫十六進(jìn)制方式;
X: 輸出整數(shù)的大寫十六進(jìn)制方式;
保留兩位小數(shù)(使用較多)
'π?is?{:.2f}'.format(3.1415926)
#?'π?is?3.14'
數(shù)字千位符格式
'{:,}'.format(123456789)
#'123,456,789'
百分比表示
"{:.0%}".format(3/10)
#'30%'
"{:.3%}".format(3/10)
#'30.000%'
日期格式表示
import?datetime
date?=?datetime.datetime(2020,?2,?1,?23,?20,?58)
'{:%Y-%m-%d?%H:%M:%S}'.format(date)
#'2020-02-01?23:20:58'
總結(jié)
以上就是關(guān)于我在實際使用過程中常用的Python字符串操作方法,由于是小編常用到的,可能不是很全,但絕對是常用操作,希望對大家有所幫助,更多Python 字符串操作,小伙伴們可自行搜索哦!
推薦閱讀 誤執(zhí)行了rm -fr /*之后,除了跑路還能怎么辦?! 程序員必備58個網(wǎng)站匯總 大幅提高生產(chǎn)力:你需要了解的十大Jupyter Lab插件
