
Python專題三字符串的基礎知識
在Python中最重要的數(shù)據(jù)類型包括字符串、列表、元組和字典等.該篇主要講述Python的字符串基礎知識.
一.字符串基礎
字符串指一有序的字符序列集合,用單引號、雙引號、三重(單雙均可)引號引起來.如:
s1='www.csdn.NET' s2="www.csdn.Net" s3='''aaabbb'''
其中字符串又包括:
1.轉義字符串
像C語言中定義了一些字母前加"\"來表示常見的那些不能顯示的ASCII字符,python也有轉義字符.如下:
\\-反斜杠符號 \'-單引號 \"-雙引號 \ a-響鈴 \b-退格(Backspace)
\n-換行 \r-回車 \f-換頁 \v-縱向制表符 \t-橫向制表符 \e-轉義
\000-空 \oyy-八進制數(shù)yy代表的字符 \xyy-十進制yy代表的字符
2.raw字符串
Python中原始字符串(raw strings),r關閉轉義機制.告訴Python后面是連串,"\"不當轉義字符處理.例:
#轉義字符和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)一碼、萬國碼)是一種在計算機上使用的字符編碼.在Unicode之前用的都是ASCII碼,Unicode通過使用一個或者多個字節(jié)來表示一個字符.Python里面默認所有字面上的字符串都用ASCII編碼,可以通過在字符串前面加一個'u'前綴的方式聲明Unicode字符串,這個'u'前綴告訴Python后面的字符串要編成Unicode字符串.例:s=u'aa\nbb'
中文處理一直很讓人頭疼,推薦:Unicode和Python的中文處理
4.格式化字符串
字符串格式化功能使用字符串格式化操作符%(百分號)實現(xiàn),在%的左側放置一個字符串(格式化字符串),而右側放置希望格式化的值,也可是元組和字典.如果需要在字符串里包括百分號,使用%%.如果右側是元組的話,則其中每一個元素都會被單獨格式化,每個值都對應一個轉化說明符.例:
"your age %d,sex %s,record %f"%(28,"Male",78.5)
輸出:'your age 28,sex Male,record 78.500000'
它有點類似于C語言的printf("%d",x),其中百分號%相當于C語言的逗號.其中字符串格式化轉換類型如下:
d,i 帶符號的十進制整數(shù)
o 不帶符號的八進制
u 不帶符號的十進制
x 不帶符號的十六進制(小寫)
X 不帶符號的十六進制(大寫)
e,E 科學計數(shù)法表示的浮點數(shù)(小寫,大寫)
f,F 十進制浮點數(shù)
c 單字符
r 字符串(使用repr轉換的任意Python)
s 字符串(使用str轉換的任意Python)
g,G 指數(shù)大于4或小于精度值和e相同,否則和f相同
二.字符串操作
字符串的基礎操作包括分割,索引,乘法,判斷成員資格,求長度等.
1.+連接操作
如:s1='csdn' s2='Eastmount' s3=s1+s2
print s1,s2 => 輸出:csdn Eastmount
print s3 => 輸出:csdnEastmount
2.*重復操作
如:s1='abc'*5
print s1 => 輸出:abcabcabcabcabc
3.索引s[index]
Python的索引格式string_name[index],可以訪問字符串里面的字符成員.
4.切片s[i:j]
Python中切片的基本格式是s[i:j:step],其中step表示切片的方向,起點不寫從0開始,終點不寫切到最后.如:
s='abcdefghijk'
sub=s[3:8]
print sub => 輸出defgh_
3 78 (起點是3 終點8不取)
其中當step=-1時表示反方向切片.如:
s='abcdefghijk'
sub=s[-1:-4:-1]
print sub => 輸出kji
因為最后一個"-1"表示從反方向切片,s[9]='j' s[-2]='j',正方向第一個'a'索引下標值為0,最后一個'k'索引下標值為-1.故'j'為-2,而sub[-1:-4:-1]表示從k(-1位置)切到h(-4位置,但不取該值).故結果為"kji".
如果想完成字符串逆序,s='www.baidu.com',則可s1=[-1::-1]即可.起點為m(-1),無終點表示切到最后.
5.字段寬度和精度
前面講述的format()函數(shù)中涉及到該知識,如'%6.2f'%12.345678 輸出"口12.35"其中6表示字段寬度,2表示精度,故補一個空格,同時采用四舍五入的方法結果輸出12.35.
同時,零(0)可表示數(shù)字將會用0填充,減號(-)用來實現(xiàn)左對齊數(shù)值,空白(" ")意味著正數(shù)前加上空格,在正負數(shù)對其時非常有用,加號表示不管正數(shù)還是負數(shù)都標識出符號,對齊時也有用.例:
#字段寬度和精度
num = 12.345678
s1 = '%6.2f'%num
print s1
#補充0
s2 = '%08.2f'%num
print s2
#減號實現(xiàn)左對齊
s3 = '%-8.2f'%num
print s3
#空白
print ('% 5d'%10) + '\n' + ('% 5d'%-10)
#符號
print ('%+5d'%10) + '\n' + ('%+5d'%-10)
#輸出
12.35
00012.35
12.35
10
-10
+10
-10
三.字符串方法
字符串從string模塊中"繼承"了很多方法,下面講解一些常用的方法:
find()
在一個較長的字符串中查找子字符串,它返回子串所在位置的最左端索引,如果沒有找到則返回-1.其格式為"S.find(sub [,start [,end]]) -> int",其中該方法可接受可選的起始點和結束點參數(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."即用來在隊列中添加元素,但隊列中元素必須是字符串.它是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",將字符串分割成序列,如果不提供分割符,程序將會把所有空格作為分隔符.
#按空格拆分成4個單詞,返回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()
去掉開頭和結尾的空格鍵(兩側且不包含內部),S.strip([chars])可以去除指定字符.而函數(shù)lstrip()去除字符串最開始的所有空格,rstrip()去除字符串最尾部的所有空格.
replace()
該方法返回某字符串的所有匹配項均被替換后得到字符串,如文字處理程序中"查找并替換"功能.
translate()
該方法和replace一樣,可以替換字符串中某部分,但與前者的區(qū)別是translate只處理單個字符,它的優(yōu)勢在于可以同時替換多個,有時候效率比replace高.
如:s='eastmount' s1=s.replace('e','E') => 替換后'Eastmount'
字符串判斷方法
isalnum()判斷是否都是有效字符(字母+數(shù)字),如判斷密碼帳號,輸出Ture\False.
isalpha()判斷是否是字母
isdigit()判斷是否是數(shù)字
islower()判斷是否全是小寫
isupper()判斷是否全是大寫
isspace()判斷是否是空格(' ')
lower()
該方法返回字符串的小寫字母版,在判斷用戶名不區(qū)分大小寫時使用.upper()轉換為大寫,title()函數(shù)將字符串轉換為標題——所有單詞的首字母大寫,而其他字母小寫,但是它使用的單詞劃分方法可能會得到不自然的結果.
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ù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調研數(shù)據(jù)中的深度應用? 市場調研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03