您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python文本處理簡單易懂方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
自從認識了python這門語言,所有的事情好像變得容易了,作為小白,逗汁兒今天就為大家總結一下python的文本處理的一些小方法。
話不多說,代碼擼起來。
python大小寫字符互換
在進行大小寫互換時,常用到的方法有4種,upper()、lower()、capitalize() 和title()。
str = "www.dataCASTLE.com" print(str.upper())# 把所有字符中的小寫字母轉換成大寫字母 print(str.lower())# 把所有字符中的大寫字母轉換成小寫字母 print(str.capitalize())# 把第一個字母轉化為大寫字母,其余小寫 print(str.title())# 把每個單詞的第一個字母轉化為大寫,其余小寫 WWW.DATACASTLE.COM www.datacastle.com Www.datacastle.com Www.Datacastle.Com
還可以同時進行大小寫互換:
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當中,不僅有大小寫字母,還有數字,符號作為干擾,運用代碼成功將大小寫進行了互換。
行列互換
01 :insert進行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]]
關于行列互換的情況,python有一個很好用的庫pandas,其中的操作非常簡便,可以到之前的文章”十分鐘上手pandas“中查看。
實現快速排序
快排的思想:首先任意選取一個數據(通常選用數組的第一個數)作為關鍵數據,然后將所有比它小的數都放到它前面,所有比它大的數都放到它后面,這個過程稱為一趟快速排序。
01:超級"簡短"的python實現的快速排序,一行代碼輕松實現快速排序。
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:一般快排實現
def quicksort(array, left, right): #建立遞歸終止條件 if left >= right: return low = left#low為序列左邊要移動的游標 high = right#high為序列右邊要移動的游標 key = array[low]#將左邊的數設為基準元素 while left < right: # 當left與right未重合,并且比基準元素要大,就將游標向左移動 while left < right and array[right] > key: right -= 1 # 如果比基準元素小,就跳出循環,并且把其放在基準元素左邊 array[left] = array[right] # 當low與last未重合,并且比基準元素要小,就將游標向右移動 while left < right and array[left] <= key: left += 1 # 如果比基準元素大,就跳出循環,并且把其放在基準元素右邊 array[right] = array[left] # 當low與last相等,就是基準元素的排序位置 array[right] = key # 對排序好的元素左右兩邊的序列進行遞歸 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:《算法導論》中的快排程序
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對list有一個內置函數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雖然是使用函數方法進行排序,但是效果非常好。使用sorted函數進行排序,不會改變a原有的排序,并且當文本中有其余字母符號等干擾時,也可以成功的將數字進行排序。
文本對齊
有些時候我們得到的文本可能是混亂的,需要進行對齊處理,關于對齊有以下幾種方法:
01:format格式化對齊
# format格式化對齊 def f1(): with open("D: .txt","r") as f: for s in f: l=s.rsplit () #左對齊,填充符號自定 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對齊
#just對齊 r='' def f2(): f=open("D: .txt","r") for s in f: l=s.rsplit() #通過指定分隔符對字符串進行切片 print(l[0].ljust(5," "),l[1].ljust(7," "),l[2]) f2() 111 ABC 西瓜 22222 AABBC 水蜜桃 3333 CSDDGFF 香蕉 44 QQQSED 波羅蜜
分行輸出
01:正則表達式分行輸出
#正則表達式 a="aA1一bB2二cC3三dD4四eE5五fF6六gG7七hH8八iI9九" import re reg=["[a-z]","[A-Z]","d","[^da-zA-Z]"] #compile和findall一起使用,返回一個列表 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七hH8八iI9九" import string ta=tb=tc=td='' la=string.ascii_lowercase#la為小寫字母 ua=string.ascii_uppercase#ua為大寫字母 nb=string.digits#nb為0~9的數字 ub="一二三四五六七八九" #分別從a中找出小寫、大寫字母、數字并進行分行輸出 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 一二三四五六七八九
好了,今天的分享就到這里。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。