A. python 字元串提取信息方法總結
在日常項目中,我們經常會使用python從字元串中提取我們想要的信息,以下是各種提取信息方法的總結。
格式: str[beg:end:step]
描述: 字元串[開始索引:結束索引:步長]切取字元串為開始索引到結束索引-1內的字元串步長不指定時步長為1
舉例:
print(str[::2]) //::這里表示整個字元串,每兩個位置提取一個
print(str[1:3]) //提取第2個到第3個
print(str[2::]) //截取2 - 末尾的字元
本小節介紹了,處理字元串經常用到的一些函數方法。
語法: str.find(str, beg=0, end=len(string))
描述: Python find() 方法檢測字元串中是否包含子字元串 str ,如果指定 beg(開始) 和 end(結束) 范圍,則檢查是否包含在指定范圍內,如果包含子字元串返回開始的索引值,否則返回-1。
語法: str.split(str="", num=string.count(str)).
描述: Python split() 通過指定分隔符對字元串進行切片,如果參數 num 有指定值,則分隔 num+1 個子字元串.返回分割後的字元串列表,該方法可以講字元串轉化為列表處理。
另外的: str.splitlines([keepends])按照行(' ', ' ', ')分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。
語法: str.partition(str)
描述: partition() 方法用來根據指定的分隔符將字元串進行分割。如果字元串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。
語法: str.replace(old, new, max)
描述: Python replace() 方法把字元串中的 old(舊字元串) 替換成 new(新字元串),如果指定第三個參數max,則替換不超過 max 次。
語法: str.strip([chars]);
描述: Python strip() 方法用於移除字元串頭尾指定的字元(默認為空格或換行符)或字元序列。:該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。
語法: str.join(sequence)
描述: Python join() 方法用於將序列中的元素以指定的字元連接生成一個新的字元串。
上述方法還有其變形,如str.rfind(),這代表從字元串右邊開始處理,正常是從左邊開始處理。下表是其它常用的python字元串自帶函數方法。
正則表達式是一個特殊的字元序列,它能幫助你方便的檢查一個字元串是否與某種模式匹配。本小節主要介紹Python中常用的正則表達式處理函數和正則表達式的書寫規則。
re 模塊使 Python 語言擁有全部的正則表達式功能。所以在python中使用正則表達式處理函數需要import re
語法: re.search(pattern, string, flags=0)
描述: re.search 掃描整個字元串並返回第一個成功的匹配。匹配成功re.search方法返回一個匹配的對象,否則返回None。
語法: re.sub(pattern, repl, string, count=0, flags=0)
描述: Python 的 re 模塊提供了re.sub用於替換字元串中的匹配項。
語法: pattern.findall(string, pos, endpos)
描述: 在字元串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。
模式字元串使用特殊的語法來表示一個正則表達式:
B. 八、 python中的數據類型——字元串
字元串是由數字、字母、下劃線組成的一串字元,比如 「hello, world!」 ,這就是一個字元串。
在python中,字元串要用引號括起來,單號號或者雙引號都可以。像是 'abc' , "xyz" 都是字元串。
在python中字元串用單引號或者雙引號括起來,例如 'a' , "b" ,a和b都是字元串類型,可以使用 type() 函數查看
python中還可以用三個引號表示字元串, ''' 或者 """ 都可以,它主要是用來表示跨行的字元串,例如:
執行 print(a,type(a)) ,可以看到結果
在"荒野獵人"和"2015-12-16"後面,都有'\n',只不過'\n'在shell中被列印出來了,所以看不到。
'\n'代表換行,因為有'\n'的存在,所以"2015-12-16","萊昂納多·迪卡普里奧 / 湯姆·哈迪"和"8.2"才從下一行開始列印。
為什麼有'\n'? 因為在定義a的時候,輸入完「荒野獵人」後按的回車,回車在計算機語言中即為'\n'。
在兩個三引號之間,單引號和雙引號都可以使用。同理,在單引號之間,可以用雙引號,在雙引號間可以用單引號。例如:
在表示一個單引號的時候,可以使用兩個雙引號,也就是 "'" ,也就是上面的例子a,另一種方法是用 '\'' ,反斜杠單引號等價於一個單引號,即:
兩個反斜杠\\代表一個反斜杠,因為你要列印一個反斜杠,但是反斜杠是轉義的意思,因此有一個特殊的轉義符 \\\\ ,它代表著一個反斜杠。
prefix還可以是元組,S.startswith(('a','b')),當S以'a'或者'b'開頭時返回True。
與find相對的,還有個rfind方法。
S.rfind(sub) -> int
它與find的區別是,find是從字元串左側開始查找,而rfind是從右側開始查找。兩者都是查找到第一個sub後就停止查找,立刻返回其索引值,沒找到返回-1。
關於更多字元串的信息,可以使用 help(str) 查看。
C. python語言中控制字元的處理
\b是一個控制字元,控制字元只在終端(控制台)中生效,用來控制終端的行為。
在文件中,控制字元被認為是一個普通字元,不具有控制功能。idle的實現是重定向輸入輸出流到程序窗口中,因此控制字元在idle中也是無效的。
D. python中字元串中的轉義字元怎麼處理
如果單獨的一個字元串,用replace()把句號逗號替換即可。如果是一個列表,用remove()清除句號逗號即可。
E. 享學課堂盤點python字元串是什麼及簡單操作方法
python 字元串str是在Python編寫程序過程中,最常見的一種基本數據類型。字元串是許多單個子串組成的序列,其主要是用來表示文本。字元串是不可變數據類型,也就是說你要改變原字元串內的元素,只能是新建另一個字元串。雖然這樣,但python中的字元串還是有許多很實用的操作方法。
Python 字元串操作方法大全
1、去空格及特殊符號
復制代碼代碼如下:
s.strip().lstrip().rstrip(',')
2、復制字元串
復制代碼代碼如下:
#strcpy(sStr1,sStr2)
sStr1 = 'strcpy'
sStr2 = sStr1
sStr1 = 'strcpy2'
print sStr2
3、連接字元串
復制代碼代碼如下:
#strcat(sStr1,sStr2)
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 += sStr2
print sStr1
4、查找字元
復制代碼代碼如下:
#strchr(sStr1,sStr2)
# < 0 為未找到
sStr1 = 'strchr'
sStr2 = 's'
nPos = sStr1.index(sStr2)
print nPos
5、比較字元串
復制代碼代碼如下:
#strcmp(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'strch'
print cmp(sStr1,sStr2)
6、掃描字元串是否包含指定的字元
復制代碼代碼如下:
#strspn(sStr1,sStr2)
sStr1 = '12345678'
sStr2 = '456'
#sStr1 and chars both in sStr1 and sStr2
print len(sStr1 and sStr2)
7、字元串長度
復制代碼代碼如下:
#strlen(sStr1)
sStr1 = 'strlen'
print len(sStr1)
8、將字元串中的大小寫轉換
復制代碼代碼如下:
S.lower() #小寫
S.upper() #大寫
S.swapcase() #大小寫互換
S.capitalize() #首字母大寫
String.capwords(S) #這是模塊中的方法。它把S用split()函數分開,然後用capitalize()把首字母變成大寫,最後用join()合並到一起
#實例:
#strlwr(sStr1)
sStr1 = 'JCstrlwr'
sStr1 = sStr1.upper()
#sStr1 = sStr1.lower()
print sStr1
9、追加指定長度的字元串
復制代碼代碼如下:
#strncat(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = 'abcdef'
n = 3
sStr1 += sStr2[0:n]
print sStr1
10、字元串指定長度比較
復制代碼代碼如下:
#strncmp(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = '123bc'
n = 3
print cmp(sStr1[0:n],sStr2[0:n])
11、復制指定長度的字元
復制代碼代碼如下:
#strncpy(sStr1,sStr2,n)
sStr1 = ''
sStr2 = '12345'
n = 3
sStr1 = sStr2[0:n]
print sStr1
12、將字元串前n個字元替換為指定的字元
復制代碼代碼如下:
#strnset(sStr1,ch,n)
sStr1 = '12345'
ch = 'r'
n = 3
sStr1 = n * ch + sStr1[3:]
print sStr1
13、掃描字元串
復制代碼代碼如下:
#strpbrk(sStr1,sStr2)
sStr1 = 'cekjgdklab'
sStr2 = 'gka'
nPos = -1
for c in sStr1:
if c in sStr2:
nPos = sStr1.index(c)
break
print nPos
14、翻轉字元串
復制代碼代碼如下:
#strrev(sStr1)
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
print sStr1
15、查找字元串
復制代碼代碼如下:
#strstr(sStr1,sStr2)
sStr1 = 'abcdefg'
sStr2 = 'cde'
print sStr1.find(sStr2)
16、分割字元串
復制代碼代碼如下:
#strtok(sStr1,sStr2)
sStr1 = 'ab,cde,fgh,ijk'
sStr2 = ','
sStr1 = sStr1[sStr1.find(sStr2) + 1:]
print sStr1
#或者
s = 'ab,cde,fgh,ijk'
print(s.split(','))
17、連接字元串
復制代碼代碼如下:
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
18、PHP 中 addslashes 的實現
復制代碼代碼如下:
def addslashes(s):
d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
return ''.join(d.get(c, c) for c in s)
s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
print s
print addslashes(s)
19、只顯示字母與數字
復制代碼代碼如下:
def OnlyCharNum(s,oth=''):
s2 = s.lower();
fomart = ''
for c in s2:
if not c in fomart:
s = s.replace(c,'');
return s;
print(OnlyStr("a000 aa-b"))
20、截取字元串
復制代碼代碼如下:
str = '0123456789′
print str[0:3] #截取第一位到第三位的字元
print str[:] #截取字元串的全部字元
print str[6:] #截取第七個字元到結尾
print str[:-3] #截取從頭開始到倒數第三個字元之前
print str[2] #截取第三個字元
print str[-1] #截取倒數第一個字元
print str[::-1] #創造一個與原字元串順序相反的字元串
print str[-3:-1] #截取倒數第三位與倒數第一位之前的字元
print str[-3:] #截取倒數第三位到結尾
print str[:-5:-3] #逆序截取,具體啥意思沒搞明白?
21、字元串在輸出時的對齊
復制代碼代碼如下:
S.ljust(width,[fillchar])
#輸出width個字元,S左對齊,不足部分用fillchar填充,默認的為空格。
S.rjust(width,[fillchar]) #右對齊
S.center(width, [fillchar]) #中間對齊
S.zfill(width) #把S變成width長,並在右對齊,不足部分用0補足
22、字元串中的搜索和替換
復制代碼代碼如下:
S.find(substr, [start, [end]])
#返回S中出現substr的第一個字母的標號,如果S中沒有substr則返回-1。start和end作用就相當於在S[start:end]中搜索
S.index(substr, [start, [end]])
#與find()相同,只是在S中沒有substr時,會返回一個運行時錯誤
S.rfind(substr, [start, [end]])
#返回S中最後出現的substr的第一個字母的標號,如果S中沒有substr則返回-1,也就是說從右邊算起的第一次出現的substr的首字母標號
S.rindex(substr, [start, [end]])
S.count(substr, [start, [end]]) #計算substr在S中出現的次數
S.replace(oldstr, newstr, [count])
#把S中的oldstar替換為newstr,count為替換次數。這是替換的通用形式,還有一些函數進行特殊字元的替換
S.strip([chars])
#把S中前後chars中有的字元全部去掉,可以理解為把S前後chars替換為None
S.lstrip([chars])
S.rstrip([chars])
S.expandtabs([tabsize])
#把S中的tab字元替換沒空格,每個tab替換為tabsize個空格,默認是8個
23、字元串的分割和組合
復制代碼代碼如下:
S.split([sep, [maxsplit]])
#以sep為分隔符,把S分成一個list。maxsplit表示分割的次數。默認的分割符為空白字元
S.rsplit([sep, [maxsplit]])
S.splitlines([keepends])
#把S按照行分割符分為一個list,keepends是一個bool值,如果為真每行後而會保留行分割符。
S.join(seq) #把seq代表的序列──字元串序列,用S連接起來
24、字元串的mapping,這一功能包含兩個函數
復制代碼代碼如下:
String.maketrans(from, to)
#返回一個256個字元組成的翻譯表,其中from中的字元被一一對應地轉換成to,所以from和to必須是等長的。
S.translate(table[,deletechars])
# 使用上面的函數產後的翻譯表,把S進行翻譯,並把deletechars中有的字元刪掉。需要注意的是,如果S為unicode字元串,那麼就不支持 deletechars參數,可以使用把某個字元翻譯為None的方式實現相同的功能。此外還可以使用codecs模塊的功能來創建更加功能強大的翻譯表。
25、字元串還有一對編碼和解碼的函數
復制代碼代碼如下:
S.encode([encoding,[errors]])
# 其中encoding可以有多種值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默認值為"strict",意思是UnicodeError。可能的值還有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通過codecs.register_error注冊的值。這一部分內容涉及codecs模塊,不是特明白
S.decode([encoding,[errors]])
26、字元串的測試、判斷函數,這一類函數在string模塊中沒有,這些函數返回的都是bool值
復制代碼代碼如下:
S.startswith(prefix[,start[,end]])
#是否以prefix開頭
S.endswith(suffix[,start[,end]])
#以suffix結尾
S.isalnum()
#是否全是字母和數字,並至少有一個字元
S.isalpha() #是否全是字母,並至少有一個字元
S.isdigit() #是否全是數字,並至少有一個字元
S.isspace() #是否全是空白字元,並至少有一個字元
S.islower() #S中的字母是否全是小寫
S.isupper() #S中的字母是否便是大寫
S.istitle() #S是否是首字母大寫的
27、字元串類型轉換函數,這幾個函數只在string模塊中有
復制代碼代碼如下:
string.atoi(s[,base])
#base默認為10,如果為0,那麼s就可以是012或0x23這種形式的字元串,如果是16那麼s就只能是0x23或0X12這種形式的字元串
string.atol(s[,base]) #轉成long
string.atof(s[,base]) #轉成float
這里再強調一次,字元串對象是不可改變的,也就是說在python創建一個字元串後,你不能把這個字元中的某一部分改變。任何上面的函數改變了字元串後,都會返回一個新的字元串,原字串並沒有變。其實這也是有變通的辦法的,可以用S=list(S)這個函數把S變為由單個字元為成員的list,這樣的話就可以使用S[3]='a'的方式改變值,然後再使用S=" ".join(S)還原成字元串
F. python處理帶控制字元的字元串
這個問題比較復雜,網上沒什麼參考答案。
只能給你一個臨時的解決方案。
s="'disvlan21x1b[1Dx1b[10Dx1b[Jdisvlan1x1b[1Dx1b[1C1x1b[1Dx1b[1C'"
s1=s[1:20]
s2=s[21:-1]
print(s1," ")
print(s2)
輸出結果:
disvlan21
disvlan11
G. python字元串處理
s1=input('輸入字元串1:')
s2=input('輸入字元串2:')
s3=''.join([iforiins1ifinotins2])
print(s3)
H. python字元串(特殊字元,取值,常用方法)
1.字元串
特殊字元串
\n:換行
\r:刪除\r前面的字元
\t:製表符
例如:
s_1 = "人生苦短,\n我選Python!"
s_2 = "人生苦短,\r我選Python!"
s_3 = "人生苦短,\t我選Python!"
print(s_1) # 人生苦短,
print(s_2) # 我選Python
print(s_3) # 人生苦短, 我選Python!
遇到特殊字元,想去掉效果,把特殊字元轉成普通字元
可以使用# r R
s_1 =r "人生苦短,\n我選Python!"
s_2 =R "人生苦短,\r我選Python!"
s_3 = "人生苦短,\t我選Python!"
2.字元串取值
特點:取頭不取尾,正序從0開始,倒序從-1開始
[start:end:step] #step:表示間隔
s='hello python lemon'
print(s[6:12:1]) #正序 python 6,7,8,9,10,11
print(s[-12:-6:1]) # 倒序 python -12,-11,-10,-9,-8,-7
print(s[:])#hello python lemon 從頭取到尾 [:]
print(s[6:]) #python lemon 從6取到尾 [start:]
print(s[:17])# [:end] 從開始取到16
獲取s所有的偶數位的字母
print(s[0:17:2])
獲取s所有的奇數位的字母
print(s[1:18:2])
倒序輸出所有的字母
print(s[17::-1]) # 不可以寫出是s[17:-1:-1] or s[17:0:-1]
3.常用方法
find() : 返回-1表示未找到子字元串,找到會返回對應字元的索引,子字元包含單個字元或多個字元
isdigit():判斷是否全部是數字,是返回True,否返回False
replace(要替換的內容:替換的內容:替換的次數):指定替換內容以及被替換的字元串,並可以指定替換次數,默認是全部替換
split(指定字元,指定切割的次數):根據指定字元對字元串進行切割,默認全部切割
strip():去掉頭和尾指定的字元
upper():字元串的字母轉成大寫
lower():字元串的字母轉成小寫
swapcase():字元串的字母大小互換
例如:
s='learn python in lemon'
print(s.find('n')) #返回找到字元串的索引
print(s.find(python))#返回找到的子字元串的第一個索引值--6
print(s.find('k')) # 返回-1
print(s.find('o',11))#從索引值為11的值開始找---19
print(s.isdigit())# 返回False
s1 = "******learn python*****"
print(s.strip("*"))# learn python
I. python字元串操作
字元串操作在各個計算機語言中都是比較常見的操作,下面我們對python的字元串操作做下簡單介紹。
一、索引操作
字元串是由一些連續的字元組成,支持索引操作,索引位置從0開始,比如以下代碼會輸出』P『字元:
二、截取子串
字元串也可以像列表那樣給定起始與終止索引生成一個新的子串,比如以下代碼會輸出「Py」:
三、連接操作
多個字元串相加會生成一個新串,比如以下代碼輸出」Love Python「:
四、大小寫轉換
調用字元串的upper與lower方法會分別生成新的大寫和小寫的字元串,比如以下代碼第一個輸出:」I LOVE PYTHON「,第二個輸出:」i love python「:
五、前後綴判斷
調用字元串的startswith與endswith方法可以判斷字元串是否以某個子串開關或者結尾,比如以下會分別列印出 」 python startswith py 「 和 」 python endswith on 「:
六、查找與替換子串
調用find方法可以判斷是否包含某個子串,比如以下代碼會輸出" python contains th" 和 " python doesn't contain he":
調用replace方法可以對字元串進行替換,比如要把"hello world"中的」hello「替換為」world「,以下代碼會輸出:」world world「
七、分隔字元串
如果我們要把一句話按空格分隔為一個一個的單詞要怎麼做呢,這時調用split方法即可,比如以下代碼會把」hello world ni hao「轉換為["hello","world","ni","hao"]:
八、清除前後字元
如果一個字元串前後有空白字元,我們需要去掉,你可以調用字元串的替換方法來做,但更簡單的做法是調用strip方法,比如以下代碼就會去掉兩端的空白字元輸出「hello python」:
九、大小寫對換
如果我們需要把字元串中的小寫轉換為大寫,大寫轉換為小寫,那要怎麼做呢,很簡單,調用下swapcase就可以了,如以下代碼會輸出「 heLLO pYThON 」:
十、字元分類判斷
有很多方法用來判斷一個字元串是否屬於某個分類,比如 isdigit判斷是否是數字,isalpha判斷是否是字母,isalnum判斷是否是字母數字等,如下代碼:
J. python字元串處理問題
strip函數只能去除首尾字元,不能去掉中間字元
strip函數沒有副作用,也就是返回值才是去掉後的字元串
更簡潔的寫法left = ''.join([c for c in password if c in symbols])