Python文本處理簡單易懂方法解析
這篇文章主要介紹了Python文本處理簡單易懂方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
自從認(rèn)識(shí)了python這門語言,所有的事情好像變得容易了,作為小白,逗汁兒今天就為大家總結(jié)一下python的文本處理的一些小方法。
話不多說,代碼擼起來。
python大小寫字符互換
在進(jìn)行大小寫互換時(shí),常用到的方法有4種,upper()、lower()、capitalize() 和title()。
str = "www.dataCASTLE.com" print(str.upper())# 把所有字符中的小寫字母轉(zhuǎn)換成大寫字母 print(str.lower())# 把所有字符中的大寫字母轉(zhuǎn)換成小寫字母 print(str.capitalize())# 把第一個(gè)字母轉(zhuǎn)化為大寫字母,其余小寫 print(str.title())# 把每個(gè)單詞的第一個(gè)字母轉(zhuǎn)化為大寫,其余小寫 WWW.DATACASTLE.COM www.datacastle.com Www.datacastle.com Www.Datacastle.Com
還可以同時(shí)進(jìn)行大小寫互換:
s="hGdssWW678qqfdDDD777f8888sD8FJJss jjYYhVV #sh&"
def fn(x):
if x.is lower():
return x.upper()
elif x.is upper():
return x.lower()
else:
return x
result=''.join([fn(r) for r in list(s)])
print(result)
HgDSSww678QQFDddd777F8888Sd8fjjSS JJyyHvv #SH&
在s當(dāng)中,不僅有大小寫字母,還有數(shù)字,符號(hào)作為干擾,運(yùn)用代碼成功將大小寫進(jìn)行了互換。
行列互換
01 :insert進(jìn)行A行與N行的互換
with open('D:
.txt','r') as f:
txt=f.readlines()
txt.insert(4,txt[1])#第二行插入第五行的位置
del(txt[1])#刪除原來的第二行
print(txt)
1 A 一
3 C 三
4 D 四
2 B 二
5 E 五
6 F 六
02: 矩陣的行列互換
matrix = [[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],]
trans = []
for i in range(4):
trans.append([row[i] for row in matrix])
print('', trans)
[[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]]
關(guān)于行列互換的情況,python有一個(gè)很好用的庫pandas,其中的操作非常簡便,可以到之前的文章”十分鐘上手pandas“中查看。
實(shí)現(xiàn)快速排序
快排的思想:首先任意選取一個(gè)數(shù)據(jù)(通常選用數(shù)組的第一個(gè)數(shù))作為關(guān)鍵數(shù)據(jù),然后將所有比它小的數(shù)都放到它前面,所有比它大的數(shù)都放到它后面,這個(gè)過程稱為一趟快速排序。
01:超級(jí)"簡短"的python實(shí)現(xiàn)的快速排序,一行代碼輕松實(shí)現(xiàn)快速排序。
def quickSort(arg):
if(arg==[]):
return []
return quickSort([i for i in arg[1:] if i<=arg[0]])+[arg[0]]+quickSort([i for i in arg[1:] if i>arg[0]])
print quickSort([11,22,8,23,7,33,13,28,66,777])
[7, 8, 11, 13, 22, 23, 28, 33, 66, 777]
02:一般快排實(shí)現(xiàn)
def quicksort(array, left, right):
#建立遞歸終止條件
if left >= right:
return
low = left#low為序列左邊要移動(dòng)的游標(biāo)
high = right#high為序列右邊要移動(dòng)的游標(biāo)
key = array[low]#將左邊的數(shù)設(shè)為基準(zhǔn)元素
while left < right:
# 當(dāng)left與right未重合,并且比基準(zhǔn)元素要大,就將游標(biāo)向左移動(dòng)
while left < right and array[right] > key:
right -= 1
# 如果比基準(zhǔn)元素小,就跳出循環(huán),并且把其放在基準(zhǔn)元素左邊
array[left] = array[right]
# 當(dāng)low與last未重合,并且比基準(zhǔn)元素要小,就將游標(biāo)向右移動(dòng)
while left < right and array[left] <= key:
left += 1
# 如果比基準(zhǔn)元素大,就跳出循環(huán),并且把其放在基準(zhǔn)元素右邊
array[right] = array[left]
# 當(dāng)low與last相等,就是基準(zhǔn)元素的排序位置
array[right] = key
# 對(duì)排序好的元素左右兩邊的序列進(jìn)行遞歸
quicksort(array, low, left - 1)
quicksort(array, left + 1, high)
array = [11,22,8,23,7,33,13,28,66,777]
print("Quick Sort: ")
quicksort(array,0,len(array)-1)
print(array)
[7, 8, 11, 13, 22, 23, 28, 33, 66, 777]
03:《算法導(dǎo)論》中的快排程序
def quicksort(array, l, r):
if l < r:
q = partition(array, l, r)
quick_sort(array, l, q - 1)
quick_sort(array, q + 1, r)
def partition(array, l, r):
x = array[r]
i = l - 1
for j in range(l, r):
if array[j] <= x:
i += 1
array[i], array[j] = array[j], array[i]
array[i + 1], array[r] = array[r], array[i+1]
return i + 1
array = [11,22,8,23,7,33,13,28,66,777]
print("Quick Sort: ")
quicksort(array,0,len(array)-1)
print(array)
[7, 8, 11, 13, 22, 23, 28, 33, 66, 777]
04:python對(duì)list有一個(gè)內(nèi)置函數(shù)sorted()排序
a = [11,22,8,23,7,33,13,28,66,777] b=sorted(a) print(b) print(a) [7, 8, 11, 13, 22, 23, 28, 33, 66, 777] [11, 22, 8, 23, 7, 33, 13, 28, 66, 777]
sorted雖然是使用函數(shù)方法進(jìn)行排序,但是效果非常好。使用sorted函數(shù)進(jìn)行排序,不會(huì)改變a原有的排序,并且當(dāng)文本中有其余字母符號(hào)等干擾時(shí),也可以成功的將數(shù)字進(jìn)行排序。
文本對(duì)齊
有些時(shí)候我們得到的文本可能是混亂的,需要進(jìn)行對(duì)齊處理,關(guān)于對(duì)齊有以下幾種方法:
01:format格式化對(duì)齊
# format格式化對(duì)齊
def f1():
with open("D:
.txt","r") as f:
for s in f:
l=s.rsplit ()
#左對(duì)齊,填充符號(hào)自定
t='{0:<5} {1:<7} {2}'.format(l[0],l[1],l[2])
print(str(t))
f1()
111 ABC 西瓜
22222 AABBC 水蜜桃
3333 CSDDGFF 香蕉
44 QQQSED 波羅蜜
02:just對(duì)齊
#just對(duì)齊
r=''
def f2():
f=open("D:
.txt","r")
for s in f:
l=s.rsplit() #通過指定分隔符對(duì)字符串進(jìn)行切片
print(l[0].ljust(5," "),l[1].ljust(7," "),l[2])
f2()
111 ABC 西瓜
22222 AABBC 水蜜桃
3333 CSDDGFF 香蕉
44 QQQSED 波羅蜜
分行輸出
01:正則表達(dá)式分行輸出
#正則表達(dá)式
a="aA1一bB2二cC3三dD4四eE5五fF6六gG7七h(yuǎn)H8八iI9九"
import re
reg=["[a-z]","[A-Z]","d","[^da-zA-Z]"]
#compile和findall一起使用,返回一個(gè)列表
for s in reg:
rega=re.compile(s)
s=re.findall(rega,a)
print("".join(s))
abcdefghi
ABCDEFGHI
123456789
一二三四五六七八九
02:string方法分行輸出
#string方法
a="aA1一bB2二cC3三dD4四eE5五fF6六gG7七h(yuǎn)H8八iI9九"
import string
ta=tb=tc=td=''
la=string.ascii_lowercase#la為小寫字母
ua=string.ascii_uppercase#ua為大寫字母
nb=string.digits#nb為0~9的數(shù)字
ub="一二三四五六七八九"
#分別從a中找出小寫、大寫字母、數(shù)字并進(jìn)行分行輸出
for s in a:
if s in la:
ta=ta+s
if s in ua:
tb=tb+s
if s in nb:
tc=tc+s
if s in ub:
td=td+s
print(ta)
print(tb)
print(tc)
print(td)
abcdefghi
ABCDEFGHI
123456789
一二三四五六七八九
好了,今天的分享就到這里。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談pandas中Dataframe的查詢方法([], loc, iloc, at, iat, ix)
下面小編就為大家分享一篇淺談pandas中Dataframe的查詢方法([], loc, iloc, at, iat, ix),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python爬蟲之正則表達(dá)式基本用法實(shí)例分析
這篇文章主要介紹了Python爬蟲之正則表達(dá)式基本用法,結(jié)合實(shí)例形式分析了Python正則表達(dá)式的基本概念、函數(shù)語法、相關(guān)使用方法及操作注意事項(xiàng),需要的朋友可以參考下2018-08-08
matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn)
本文主要介紹了matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python PyMuPDF實(shí)現(xiàn)PDF與圖片和PPT相互轉(zhuǎn)換
能夠用來對(duì)PDF文檔進(jìn)行操作的Python包有好幾個(gè),如提取內(nèi)容的PdfPlumber、PDFMiner,可以用來對(duì)PDF文件進(jìn)行修改操作的PyPDF2等等,如果只是需要簡單地對(duì)PDF文件實(shí)現(xiàn)合并、拆分、書簽操作,使用PyPDF2就足以滿足。但如果想對(duì)PDF文件進(jìn)行一些底層操作,基本上只有PyMuPDF了2022-12-12
Python實(shí)現(xiàn)插入排序和選擇排序的方法
這篇文章主要介紹了Python實(shí)現(xiàn)插入排序和選擇排序的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
使用Python繪制動(dòng)態(tài)愛心并表白的代碼詳解
在這個(gè)充滿浪漫的季節(jié),如何用代碼表達(dá)你的愛意呢?今天我們將使用 Python 的 matplotlib 和 numpy 庫繪制一個(gè)動(dòng)態(tài)的愛心,并且在愛心上添加表白的文字,這將是一個(gè)獨(dú)特而浪漫的方式來表達(dá)你的心聲,感興趣的小伙伴跟著小編來看看吧2025-04-04
基于python 將列表作為參數(shù)傳入函數(shù)時(shí)的測試與理解
這篇文章主要介紹了基于python 將列表作為參數(shù)傳入函數(shù)時(shí)的測試與理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
pandas.DataFrame的for循環(huán)迭代的實(shí)現(xiàn)
本文主要介紹了pandas.DataFrame的for循環(huán)迭代的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python實(shí)現(xiàn)考試自動(dòng)答題的腳本分享
最近這段時(shí)間天氣正正好,不冷不熱,是學(xué)習(xí)考駕照的好時(shí)機(jī)。為了幫助大家能夠順利獲得駕照,小編為大家準(zhǔn)備了駕照考試的自動(dòng)答題小程序,希望對(duì)大家有所幫助2023-03-03

