
Python專題三字符串的基礎(chǔ)知識(shí)
在Python中最重要的數(shù)據(jù)類型包括字符串、列表、元組和字典等.該篇主要講述Python的字符串基礎(chǔ)知識(shí).
一.字符串基礎(chǔ)
字符串指一有序的字符序列集合,用單引號(hào)、雙引號(hào)、三重(單雙均可)引號(hào)引起來.如:
s1='www.csdn.NET' s2="www.csdn.Net" s3='''aaabbb'''
其中字符串又包括:
1.轉(zhuǎn)義字符串
像C語言中定義了一些字母前加"\"來表示常見的那些不能顯示的ASCII字符,python也有轉(zhuǎn)義字符.如下:
\\-反斜杠符號(hào) \'-單引號(hào) \"-雙引號(hào) \ a-響鈴 \b-退格(Backspace)
\n-換行 \r-回車 \f-換頁 \v-縱向制表符 \t-橫向制表符 \e-轉(zhuǎn)義
\000-空 \oyy-八進(jìn)制數(shù)yy代表的字符 \xyy-十進(jìn)制yy代表的字符
2.raw字符串
Python中原始字符串(raw strings),r關(guān)閉轉(zhuǎn)義機(jī)制.告訴Python后面是連串,"\"不當(dāng)轉(zhuǎn)義字符處理.例:
#轉(zhuǎn)義字符和raw字符
s1="aa\nbb"
print s1
s2=r"aa\nbb"
print s2
#輸出
aa
bb
aa\nbb
#raw原始字符串處理磁盤路徑
open(r'C:\temp\test.txt','a+')
open('C:\\temp\\test.txt','a+')
3.unicode字符串
告訴Python是Unicode編碼,Unicode(統(tǒng)一碼、萬國碼)是一種在計(jì)算機(jī)上使用的字符編碼.在Unicode之前用的都是ASCII碼,Unicode通過使用一個(gè)或者多個(gè)字節(jié)來表示一個(gè)字符.Python里面默認(rèn)所有字面上的字符串都用ASCII編碼,可以通過在字符串前面加一個(gè)'u'前綴的方式聲明Unicode字符串,這個(gè)'u'前綴告訴Python后面的字符串要編成Unicode字符串.例:s=u'aa\nbb'
中文處理一直很讓人頭疼,推薦:Unicode和Python的中文處理
4.格式化字符串
字符串格式化功能使用字符串格式化操作符%(百分號(hào))實(shí)現(xiàn),在%的左側(cè)放置一個(gè)字符串(格式化字符串),而右側(cè)放置希望格式化的值,也可是元組和字典.如果需要在字符串里包括百分號(hào),使用%%.如果右側(cè)是元組的話,則其中每一個(gè)元素都會(huì)被單獨(dú)格式化,每個(gè)值都對(duì)應(yīng)一個(gè)轉(zhuǎn)化說明符.例:
"your age %d,sex %s,record %f"%(28,"Male",78.5)
輸出:'your age 28,sex Male,record 78.500000'
它有點(diǎn)類似于C語言的printf("%d",x),其中百分號(hào)%相當(dāng)于C語言的逗號(hào).其中字符串格式化轉(zhuǎn)換類型如下:
d,i 帶符號(hào)的十進(jìn)制整數(shù)
o 不帶符號(hào)的八進(jìn)制
u 不帶符號(hào)的十進(jìn)制
x 不帶符號(hào)的十六進(jìn)制(小寫)
X 不帶符號(hào)的十六進(jìn)制(大寫)
e,E 科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)(小寫,大寫)
f,F 十進(jìn)制浮點(diǎn)數(shù)
c 單字符
r 字符串(使用repr轉(zhuǎn)換的任意Python)
s 字符串(使用str轉(zhuǎn)換的任意Python)
g,G 指數(shù)大于4或小于精度值和e相同,否則和f相同
二.字符串操作
字符串的基礎(chǔ)操作包括分割,索引,乘法,判斷成員資格,求長度等.
1.+連接操作
如:s1='csdn' s2='Eastmount' s3=s1+s2
print s1,s2 => 輸出:csdn Eastmount
print s3 => 輸出:csdnEastmount
2.*重復(fù)操作
如:s1='abc'*5
print s1 => 輸出:abcabcabcabcabc
3.索引s[index]
Python的索引格式string_name[index],可以訪問字符串里面的字符成員.
4.切片s[i:j]
Python中切片的基本格式是s[i:j:step],其中step表示切片的方向,起點(diǎn)不寫從0開始,終點(diǎn)不寫切到最后.如:
s='abcdefghijk'
sub=s[3:8]
print sub => 輸出defgh_
3 78 (起點(diǎn)是3 終點(diǎn)8不取)
其中當(dāng)step=-1時(shí)表示反方向切片.如:
s='abcdefghijk'
sub=s[-1:-4:-1]
print sub => 輸出kji
因?yàn)樽詈笠粋€(gè)"-1"表示從反方向切片,s[9]='j' s[-2]='j',正方向第一個(gè)'a'索引下標(biāo)值為0,最后一個(gè)'k'索引下標(biāo)值為-1.故'j'為-2,而sub[-1:-4:-1]表示從k(-1位置)切到h(-4位置,但不取該值).故結(jié)果為"kji".
如果想完成字符串逆序,s='www.baidu.com',則可s1=[-1::-1]即可.起點(diǎn)為m(-1),無終點(diǎn)表示切到最后.
5.字段寬度和精度
前面講述的format()函數(shù)中涉及到該知識(shí),如'%6.2f'%12.345678 輸出"口12.35"其中6表示字段寬度,2表示精度,故補(bǔ)一個(gè)空格,同時(shí)采用四舍五入的方法結(jié)果輸出12.35.
同時(shí),零(0)可表示數(shù)字將會(huì)用0填充,減號(hào)(-)用來實(shí)現(xiàn)左對(duì)齊數(shù)值,空白(" ")意味著正數(shù)前加上空格,在正負(fù)數(shù)對(duì)其時(shí)非常有用,加號(hào)表示不管正數(shù)還是負(fù)數(shù)都標(biāo)識(shí)出符號(hào),對(duì)齊時(shí)也有用.例:
#字段寬度和精度
num = 12.345678
s1 = '%6.2f'%num
print s1
#補(bǔ)充0
s2 = '%08.2f'%num
print s2
#減號(hào)實(shí)現(xiàn)左對(duì)齊
s3 = '%-8.2f'%num
print s3
#空白
print ('% 5d'%10) + '\n' + ('% 5d'%-10)
#符號(hào)
print ('%+5d'%10) + '\n' + ('%+5d'%-10)
#輸出
12.35
00012.35
12.35
10
-10
+10
-10
三.字符串方法
字符串從string模塊中"繼承"了很多方法,下面講解一些常用的方法:
find()
在一個(gè)較長的字符串中查找子字符串,它返回子串所在位置的最左端索引,如果沒有找到則返回-1.其格式為"S.find(sub [,start [,end]]) -> int",其中該方法可接受可選的起始點(diǎn)和結(jié)束點(diǎn)參數(shù).而rfind()從右往左方向查找.
title = 'Hello Python,Great Python'
length = len(title)
print length
print title.find('Python')
print title.find('Python',10,30)
#輸出:
25
6
19
join()
其格式為"S.join(iterable) -> string",含義為"Return a string which is the concatenation of the strings in the iterable. The separator between elements is S."即用來在隊(duì)列中添加元素,但隊(duì)列中元素必須是字符串.它是split方法的逆方法.
seq = ['1','2','3','4']
sep = '+'
print sep.join(seq) #連接字符串列表 sep表示'+'連接
dirs = '','usr','bin','env'
print '/'.join(dirs)
print 'C:'+'\\'.join(dirs)
#輸出
1+2+3+4
/usr/bin/env
C:\usr\bin\env
split()
字符串分割函數(shù),格式為"S.split([sep [,maxsplit]]) -> list of strings",將字符串分割成序列,如果不提供分割符,程序?qū)?huì)把所有空格作為分隔符.
#按空格拆分成4個(gè)單詞,返回list
s = 'please use the Python!'
li = s.split()
print li
print '1+2+3+4+5'.split('+')
#輸出
['please', 'use', 'the', 'Python!']
['1', '2', '3', '4', '5']
strip()
去掉開頭和結(jié)尾的空格鍵(兩側(cè)且不包含內(nèi)部),S.strip([chars])可以去除指定字符.而函數(shù)lstrip()去除字符串最開始的所有空格,rstrip()去除字符串最尾部的所有空格.
replace()
該方法返回某字符串的所有匹配項(xiàng)均被替換后得到字符串,如文字處理程序中"查找并替換"功能.
translate()
該方法和replace一樣,可以替換字符串中某部分,但與前者的區(qū)別是translate只處理單個(gè)字符,它的優(yōu)勢(shì)在于可以同時(shí)替換多個(gè),有時(shí)候效率比replace高.
如:s='eastmount' s1=s.replace('e','E') => 替換后'Eastmount'
字符串判斷方法
isalnum()判斷是否都是有效字符(字母+數(shù)字),如判斷密碼帳號(hào),輸出Ture\False.
isalpha()判斷是否是字母
isdigit()判斷是否是數(shù)字
islower()判斷是否全是小寫
isupper()判斷是否全是大寫
isspace()判斷是否是空格(' ')
lower()
該方法返回字符串的小寫字母版,在判斷用戶名不區(qū)分大小寫時(shí)使用.upper()轉(zhuǎn)換為大寫,title()函數(shù)將字符串轉(zhuǎn)換為標(biāo)題——所有單詞的首字母大寫,而其他字母小寫,但是它使用的單詞劃分方法可能會(huì)得到不自然的結(jié)果.
s = 'this is a good idea'
s1 = s.upper()
print s1
s2 = s.title()
print s2
#輸出
THIS IS A GOOD IDEA
This Is A Good Idea
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10