1. 程式人生 > 程式設計 >Python文字處理簡單易懂方法解析

Python文字處理簡單易懂方法解析

這篇文章主要介紹了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],[2,2,2],[3,3,3],]

trans = []
for i in range(4):
  trans.append([row[i] for row in matrix])

print('',trans)
 [[1,[1,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,11,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,777]
print("Quick Sort: ")
quicksort(array,len(array)-1)
print(array)
[7,777]

03:《演算法導論》中的快排程式

def quicksort(array,l,r):
  if l < r:
    q = partition(array,r)
    quick_sort(array,q - 1)
    quick_sort(array,q + 1,r)

def partition(array,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,777]

04:python對list有一個內建函式sorted()排序

a = [11,777]
b=sorted(a)
print(b)
print(a)

[7,777]
[11,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
一二三四五六七八九

好了,今天的分享就到這裡。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。