新聞中心
今天小編給大家分享一下python的文本處理方法有哪些的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
1、字符串常量
1.1、定義字符串
python不區(qū)分字符和字符串,所以python可以使用引號(hào)或者雙引號(hào)來(lái)定義字符串,如下:
7]: "He's a teacher"
8]: 'john said to me:"can you do me a favor tonight"'
當(dāng)然,python也可以使用轉(zhuǎn)譯字符來(lái)進(jìn)行轉(zhuǎn)譯,轉(zhuǎn)譯字符是\。
\`:?jiǎn)我?hào)
\n:換行
\a:響鈴
\b:退格,將當(dāng)前位置移動(dòng)到前一列
\f:換頁(yè),將當(dāng)前位置移動(dòng)到下頁(yè)開(kāi)頭
\r:回車,將當(dāng)前位置移動(dòng)到本行開(kāi)頭
\t:水平制表,跳到下一個(gè)TAB位置
\v:垂直制表
\\:代表一個(gè)反斜杠字符'\'
在編程語(yǔ)言中,使用\定義轉(zhuǎn)譯字符,在URL中,使用%定義轉(zhuǎn)譯字符。
對(duì)于前面的例子,還可以用轉(zhuǎn)譯字符來(lái)表示:
11]: "He\'s a teacher"
12]: "john said to me:\"can you do me a favor tonight\""
大家通過(guò)前面的介紹,知道python遇到\時(shí),會(huì)認(rèn)為是一個(gè)轉(zhuǎn)移符,但是如下,可能改變我們的初衷:
18]: r"c:\next"
19]: print(\next
在python中,還可以使用三引號(hào)來(lái)定義字符串,如下:
25]: "hello"
26]: 0]
26]: 'h'
27]: 0] = 'H'
input27812in 1 0] = 'H'
'str' object not 30]: 30]: 'hello'
31]: 1:]
31]: 'ello'
32]: 'H' 1:]
33]: 33]: 'Hello'
34]: 'World'
34]: 'HelloWorld'
35]: 35]: 'Hello'
36]: 3
36]: 'HelloHelloHello'
python字符串每次操作都會(huì)產(chǎn)生一個(gè)新的字符串,新的字符串會(huì)占用一塊獨(dú)立的內(nèi)存。因此,操作字符串時(shí)需要避免產(chǎn)生太多的中間結(jié)果。
枚舉元組里面東西,應(yīng)該用字符串的join方法,如下:
40]: "Hello,world"
41]: 5]
41]: 'Hello'
42]: 0:5]
42]: 'Hello'
43]: 0:4]
43]: 'Hell'
44]: 5]
44]: ','
49]: 6:]
49]: 'world'
68]: 68]: 'Hello,world'
69]: reversed(69]: reversed 0x2d5c2d072]: ''.reversed(72]: 'dlrow,olleH'
2、字符串函數(shù)
2.1 通用操作
11]: 1,2,3,4,5]
13]: len(13]: 5
15]: 1 in 15]: True
在Python語(yǔ)言的設(shè)計(jì)哲學(xué)中,字符串、列表和元組具有一些共性,即他們都是元素的有序集合,python語(yǔ)言將對(duì)共性的操作提煉成了通用操作。因此,下標(biāo)訪問(wèn)、序列切片操作、求長(zhǎng)度和判斷元素是否存在于集合中都是通過(guò)更加通用的函數(shù)和表達(dá)式提供支持。
2.2 與大小寫相關(guān)的方法
以下是幾個(gè)函數(shù)是與字符大小寫相關(guān)的字符串處理函數(shù):
1)upper:將字符串轉(zhuǎn)換為大寫;
2)lower:將字符串轉(zhuǎn)換為小寫;
3)isupper:判斷字符串是否都為大寫;
4)islower:判斷字符串是否都為小寫;
5)swapcase:將字符串中的大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫;
6)capitalize:將首字符轉(zhuǎn)換為大寫;
7)istitle:判斷字符串是不是一個(gè)標(biāo)題。
例子:
91]: "LAI MING XING".91]: 'lai ming xing'
92]: "LAI MING XING".92]: True
93]: "LAI MING XING".93]: 'lai ming xing'
95]: "lai ming xing".95]: 'Lai ming xing'
96]: "lai ming xing".96]: False
97]: "Lai Ming Xing".97]: True
18]: "Python".18]: True
19]: "Python 3.6".19]: False
20]: "Python 3.6".20]: False
21]: "\t\n".21]: True
23]: u"Python 3.6".23]: False
25]: u"36".25]: True
u"Python 3.6".isdecimal()
u/U:表示unicode字符串
不是僅僅是針對(duì)中文, 可以針對(duì)任何的字符串,代表是對(duì)字符串進(jìn)行unicode編碼。
一般英文字符在使用各種編碼下, 基本都可以正常解析, 所以一般不帶u;但是中文, 必須表明所需編碼, 否則一旦編碼轉(zhuǎn)換就會(huì)出現(xiàn)亂碼。
建議所有編碼方式采用utf8
4、字符串方法startswith和endswith
startswith和endswith也是兩個(gè)判斷函數(shù),用來(lái)判斷方法的參數(shù)是否為字符串的前綴和后綴。
2]: import 4]: [ for in '.') if '.py') ]
4]: ['f.py', 'e.py', 'g.py']
5]: [ for in '.') if '.txt') ]
5]: ['d.txt', 'b.txt', 'a.txt', 'c.txt']
在我們的實(shí)際工作中,更多的時(shí)候可能需要前綴匹配:
6]: import 7]: for in '/var/log/') if 'message')]
8]: 8]: ['messages-20171231', 'messages']
9]: sum('/var/log',for in 10]: 10]: 526031
5、查找類函數(shù)
下面幾個(gè)函數(shù)都是用來(lái)查找子串出現(xiàn)在字符串中的位置,他們之間的區(qū)別就是查找的方向不同,或者是處理異常情況的方式不同:
1)find:查找子串出現(xiàn)在字符串中的位置,如果查找失敗,返回-1;
2)index:與find函數(shù)類似,如果查找失敗,拋出ValueError異常;
3)rfind:與find函數(shù)類似,區(qū)別在于rfind是從后向前找;
4)findex:與index類似,區(qū)別在于rindex是從后向橋找。
例子:
40]: 40]: 'Return the lowest index in S where substring sub is found'
41]: 'in' in 41]: True
43]: 'indbbb' not in 43]: True
6、字符串操作方法
前面說(shuō)過(guò),python的字符串是不可變的,無(wú)法修改。如果要修改原來(lái)的字符串,可以對(duì)字符串執(zhí)行修改操作,將修改后的字符串再賦值回原來(lái)的變量。
6.1 join函數(shù)
字符串的join函數(shù)用以連接字符串列表,組成一個(gè)新的、更大的字符串。
print('root','root','/bin/bash',':')
6.3 strip函數(shù)
strip:對(duì)字符串兩邊進(jìn)行裁剪;
lstrip:對(duì)字符串左邊進(jìn)行裁剪;
rstrip:對(duì)字符串右邊進(jìn)行裁剪。
使用場(chǎng)景:strip函數(shù)使用最多的場(chǎng)景是去除字符串兩邊的空白字符,如下:
83]: "##Hello,world##"
84]: 84]: '##Hello,world##'
85]: '#')
85]: 'Hello,world'
86]: '####')
86]: 'Hello,world'
87]: 'H#d')
87]: 'ello,worl'
90]: 'dH#')
90]: 'ello,worl'
6.4、relapace函數(shù)
作用:將字符串的子串替換成另外一個(gè)新的子串:
93]: '193.252.243.232 - - [29/Mar/2009:06:05:34 +0200] "GET /index.php HTTP/1.1" 200 8741 "-" "Mozilla/5.0 (compatible; PJBot/3.0; +http://crawl.pagesjaunes.fr/robot)" "-" '
95]: 95]:
['193.252.243.232',
'-',
'-',
'[29/Mar/2009:06:05:34',
'+0200]',
'"GET',
'/index.php',
'HTTP/1.1"',
'200',
'8741',
'"-"',
'"Mozilla/5.0',
'(compatible;',
'PJBot/3.0;',
'+http://crawl.pagesjaunes.fr/robot)"',
'"-"']
97]: 0]
97]: '193.252.243.232'
98]: 6]
98]: '/index.php'
需求1:通過(guò)apache訪問(wèn)日志,統(tǒng)計(jì)PV和UV(pv是訪問(wèn)的訪問(wèn)請(qǐng)求數(shù),uv是網(wǎng)站獨(dú)立訪客數(shù))。
accesslog日志如下:
[# cat test.py
#!/usr/bin/python
#coding:utf-8
from import with open('/root/access.log') as for in 0])
print("PV is {0}".len(#下面我們將ips列表通過(guò)set關(guān)鍵字轉(zhuǎn)換為集合,因?yàn)榧咸焐途途哂腥ブ氐墓δ堋?/pre>print("UV is {0}".len(set(以上就是“python的文本處理方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
當(dāng)前名稱:python的文本處理方法有哪些-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://www.ef60e0e.cn/article/dpipgh.html