python 小知識點 字串處理

2021-10-07 06:55:33 字數 2337 閱讀 4392

對於字串的處理無論是哪種語言都是相當重要的

python對於字串的處理提供了大量的內建函式:

必須掌握兩種計算字串處理技巧

另乙個必備的字串處理技能是:能夠利用給定程式語言的標準庫進行基本的字串操作

字串表示方法

常用操作

s = '12345678'

print(s[3]) # 提取第四個字元

print(s[:3]) # 提取前三個字元

print(s[-3:]) # 提取倒數三個字元

print(s[1:3]) # 提取一到三個字元

print(s[3::2]) # 提取第四個字元到最後,間隔2提取

print(s[::]) # 提取所有字元

print(s[::-1]) # 翻轉

常用內建函式

正規表示式

除了常規的方法以外,更強大的字元處理工具費正規表示式莫屬了

正規表示式方法有很多,網上有大量的教程,這裡只是對常用函式大概說明,具體細節請網上了解

輸出

['1234', '5678', '0']

['1', '2345', '6789']

基本實現方式,邏輯簡單但執行速度慢,耗時巨大

strings = [a for a in open('file.txt')]  # 關鍵字列表

with open("err.txt", "r") as f:

for chunk in f:

for s in strings

#do search, trimming, stripping ..

在了解了字串是如何以二進位制(ascii,utf-8)編碼的,則可以一次mmap將整個檔案存入記憶體,因此就像獲得了大bytearray/bytes,那麼mmap可以用bytes正規表示式(python 3)搜尋這樣的物件

mmap是許多作業系統上最快的解決方案,因為唯讀對映意味著os可以在頁面準備就緒時自由地對映它們。不需要交換空間,因為資料由檔案支援。作業系統還可以直接從零快取複製對映快取中的資料,從而在裸讀上實現雙贏

import mmap

import re

pattern = re.compile(b'the ultimate answer is ([0-9]+)')  # 要搜尋的目標

with open("err.txt", "rb") as f:

# memory-map the file, size 0 means whole file

mm = mmap.mmap(f.fileno(), 0, prot=mmap.prot_read)

# prot_read only on *nix as the file is not writable

for match in pattern.finditer(mm):

# process match

print("the answer is {}".format(match.group(1).decode('ascii')))

mm.close()

注:

1.字串物件是不可改變的,也就是說在python建立乙個字串後,你不能把這個字元中的某一部分改變。任何上面的函式改變了字串後,都會返回乙個新的字串,原字串並沒有變

2.python 不支援單字元型別,單字元也是作為乙個字串

字串小知識點

1 字串操作 strcpy p,p1 複製字串 strncpy p,p1,n 複製指定長度字串 strcat p,p1 附加字串 strncat p,p1,n 附加指定長度字串 strlen p 取字串長度 strcmp p,p1 比較字串 strcasecmp忽略大小寫比較字串 strncmp p...

python 小知識點 多字串替換

乙個長字串或者乙個文字檔案做資料分析的時候經常遇到需要排除干擾項的需求,這時候就需要多字串替換的功能 使用str的 replace函式 字串常用的替換函式 比如說將標點替換成空,使用replace連續替換多次即可 s there was a card party at the rooms of na...

Python字串知識點總結

a abc b a 1 字串反轉 c a 1 3 字串擷取,下標從0開始,謹記左開右閉 print a,b,c out abc cba bcnum 3.1415926 print f 小數點後取3位,注意是四捨五入的 out 3.1416str1 this is string example wow...