Python數據結構之字符串

  • 一個個字符組成的有序的序列,是字符的集合
  • 使用單引號、雙引號、三引號引住的字符序列
  • 字符串是不可變對象
  • Python3起,字符串就是Unicode類型

 

字符串元素訪問——下標

  • 字符串支持使用索引訪問
  • 有序的字符集合,字符序列
  • 可迭代

 

字符串鏈接

join鏈接

"string".join(iterable) -> strgit

  • 將可迭代對象鏈接起來,使用string做爲分隔符
  • 可迭代對象自己元素都是字符串
  • 返回一個新字符串
字符串+鏈接

+ -> strapi

  • 將2個字符串鏈接在一塊兒
  • 返回一個新字符串

 

字符串分割

split系

將字符串按照分隔符分割成若干字符串,並返回列表
split(sep=None, maxsplit=-1) -> list of stringside

  • 從左至右
  • sep 指定分割字符串,缺省的狀況下空白字符串做爲分隔符
  • maxsplit 指定分割的次數,-1 表示遍歷整個字符串

rsplit(sep=None, maxsplit=-1) -> list of strings函數

  • 從右向左
  • sep 指定分割字符串,缺省的狀況下空白字符串做爲分隔符
  • maxsplit 指定分割的次數,-1 表示遍歷整個字符串

splitlines([keepends]) -> list of stringsspa

  • 按照行來切分字符串
  • keepends 指的是是否保留行分隔符
  • 行分隔符包括\n、\r\n、\r等
partition系

將字符串按照分隔符分割成2段,返回這2段和分隔符的元組
partition(sep) -> (head, sep, tail)3d

  • 從左至右,遇到分隔符就把字符串分割成兩部分,返回頭、分隔符、尾三部分的三元組;若是沒有找到分隔符,就返回頭、2個空元素的三元組
  • sep 分割字符串,必須指定

rpartition(sep) -> (head, sep, tail)code

  • 從右至左,遇到分隔符就把字符串分割成兩部分,返回頭、分隔符、尾三部分的三元組;若是沒有找到分隔符,就返回2個空元素和尾的三元組

 

字符串大小寫

upper() 全大寫
lower() 全小寫

 

 

大小寫,作判斷的時候用orm

swapcase() 交互大小寫

 

 

字符串排版

title() -> str 標題的每一個單詞都大寫
capitalize() -> str 首個單詞大寫
center(width[, fillchar]) -> str
  • width 打印寬度
  • fillchar 填充的字符
zfill(width) -> str width 打印寬度,居右,左邊用0填充
ljust(width[, fillchar]) -> str 左對齊
rjust(width[, fillchar]) -> str 右對齊

 

 

 

 

 

 

 

字符串修改

replace(old, new[, count]) -> strserver

  • 字符串中找到匹配替換爲新子串,返回新字符串
  • count表示替換幾回,不指定就是所有替換
  • 字符串的replace方法從左到右,不會回頭

strip([chars]) -> str對象

  • 從字符串兩端去除指定的字符集chars中的全部字符
  • 若是chars沒有指定,去除兩端的空白字符
lstrip([chars]) -> str 從左開始
rstrip([chars]) -> str 從右開始

 

 

 

字符串查找

find(sub[, start[, end]]) -> int

在指定的區間[start, end),從左至右,查找子串sub。找到返回索引,沒找到返回-1

rfind(sub[, start[, end]]) -> int

在指定的區間[start, end),從右至左,查找子串sub。找到返回索引,沒找到返回-1

index(sub[, start[, end]]) -> int
在指定的區間[start, end),從左至右,查找子串sub。找到返回索引,沒找到拋出異常ValueError

rindex(sub[, start[, end]]) -> int

在指定的區間[start, end),從左至右,查找子串sub。找到返回索引,沒找到拋出異常ValueError

時間複雜度

  • index和count方法都是O(n)
  • 隨着列表數據規模的增大,而效率降低

len(string)

返回字符串的長度,即字符的個數

count(sub[, start[, end]]) -> int

在指定的區間[start, end),從左至右,統計子串sub出現的次數

 

字符串判斷

endswith(suffix[, start[, end]]) -> bool

在指定的區間[start, end),字符串是不是suffix結尾

startswith(prefix[, start[, end]]) -> bool

在指定的區間[start, end),字符串是不是prefix開頭

is系列 -> bool
isalnum() 是不是字母和數字組成
isalpha() 是不是字母
isdecimal() 是否只包含十進制數字
isdigit() 是否所有數字(0~9)
isidentifier() 是否是字母和下劃線開頭,其餘都是字母、數字、下劃線
islower() 是否都是小寫
isupper() 是否所有大寫
isspace() 是否只包含空白字符

 

 

 

 

 

 

 

 

 

字符串格式化

字符串的格式化是一種拼接字符串輸出樣式的手段,更靈活方便

  • join拼接只能使用分隔符,且要求被拼接的是可迭代對象
  • + 拼接字符串還算方便,可是非字符串須要先轉換爲字符串才能拼接

在2.5版本以前,只能使用printf style風格的print輸出

  • printf-style formatting,來自於C語言的printf函數
  • 格式要求

    * 佔位符:使用%和格式字符組成,例如%s、%d等

      > s調用str(),r會調用repr()。全部對象均可以被這兩個轉換。

    * 佔位符中還能夠插入修飾字符,例如%03d表示打印3個位置,不夠前面補零

    * format % values,格式字符串和被格式的值之間使用%分隔

    * values只能是一個對象,或是一個和格式字符串佔位符數目相等的元組,或一個字典

printf-style formatting 舉例:

"I am %03d" % (20,)

'I like %s.' % 'Python'

'%3.2f%% , 0x%x, 0X%02X' % (89.7654, 10, 15)

"I am %-5d" % (20,)

 

format函數格式字符串語法——Python鼓勵使用

  • "{} {xxx}".format(*args, **kwargs) -> str
  • args是位置參數,是一個元組
  • kwargs是關鍵字參數,是一個字典
  • 花括號表示佔位符
  • {}表示按照順序匹配位置參數,{n}表示取位置參數索引爲n的值
  • {xxx}表示在關鍵字參數中搜索名稱一致的
  • {{}} 表示打印花括號
位置參數

"{}:{}".format('192.168.1.100',8888),這就是按照位置順序用位置參數替換前面的格式字符串的佔位符中

關鍵字參數或命名參數

"{server} {1}:{0}".format(8888, '192.168.1.100', server='Web Server Info : ') ,位置參數按照序號匹配,關鍵字參數按照名詞匹配

訪問元素

"{0[0]}.{0[1]}".format(('magedu','com'))

對象屬性訪問

from collections import namedtuple

Point = namedtuple('Point','x y')

p = Point(4,5)

"{{{0.x},{0.y}}}".format(p)

對齊

'{0}*{1}={2:<2}'.format(3,2,2*3)

'{0}*{1}={2:<02}'.format(3,2,2*3)

'{0}*{1}={2:>02}'.format(3,2,2*3)

'{:^30}'.format('centered')

'{:*^30}'.format('centered')

進制

"int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)

"int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)

octets = [192, 168, 0, 1]

'{:02X}{:02X}{:02X}{:02X}'.format(*octets)

相關文章
相關標籤/搜索