1. 字串概述
字串是Python基本資料結構——序列。索引、 切片、 相加、 相乘和成員資格檢查等序列通用操作也適用於字串
2. 字串相關術語
2.1 轉義
讓某個符號不再表示某種含義, 而是表示另外一種含義。
2.2 轉義符
反斜槓: \
2.3 轉義字元
轉義字元表示某些字元用常規的方式不能在字串中表示出來。如 \t、\n等。
2.4 原始字元
每個字元都是原始含義的字串,宣告原始字元則在字串開始加上字母“r”
>>> path = r"D:\python36" >>> path 'D:\\python36'
2.5 多行字串
起止是 3 個單引號或 3 個雙引號的字串。在 Python 中,“三重引號” 之間的所有引號、 製表符或換行, 都被認為是字串的一部分。
3. 格式化字串
基本思路:對字串呼叫方法format,並提供要設定其格式的值。
>>> "The number is {num:f}".format(num=42) 'The number is 42.000000'
4. 字串常用方法及程式碼實踐(源自《Python程式設計快速上手 讓繁瑣工作自動化》)
# (列表)list_to_str.py ''' 假定有下面這樣的列表: spam = ['apples', 'bananas', 'tofu', 'cats'] 編寫一個函式,它以一個列表值作為引數,返回一個字串。該字串包含所有表項, 表項之間以逗號和空格分隔,並在最後一個表項之前插入 and。例如,將前面的 spam 列表傳遞給函式, 將返回'apples, bananas, tofu, and cats'。但你的函式應該能夠處理傳遞給它的任何列表。 ''' # 關鍵是先在列表倒數第二的位置新增'and',再用字串方法join,','join(seq)合併列表 # 僅能處理該題目,要處理任何列表有待改進 spam = ['apples', 'bananas', 'tofu', 'cats'] def list_to_str(lis): lis.insert(-1, 'and') lis=(' ').join(lis) # 注意兩個單引號裡面是有個英文空格 print(lis) return lis if __name__ == '__main__': list_to_str(spam)
# (字串)右對齊列印矩陣.py ''' 編寫一個名為 printTable()的函式, 它接受字串的列表的列表,將它顯示在組織良好的表格中, 每列右對齊。 假定所有內層列表都包含同樣數目的字串。例如,該值可能看起來像這樣: tableData = [['apples', 'oranges', 'cherries', 'banana'], ['Alice', 'Bob', 'Carol', 'David'], ['dogs', 'cats', 'moose', 'goose']] 你的 printTable()函式將列印出: apples Alice dogs oranges Bob cats cherries Carol moose banana David goose ''' # 意思是將這個3行4列的巢狀列表中的每列元素(縱向),橫向(排列)換行列印出來 # 因為要求列印出來的每列字元(即每個列表中的字元)右對齊,所以要先確定每個列表中的最長字串長度,再呼叫右對齊rjust()方法並傳入最長字串的長度 tableData = [['apples', 'oranges', 'cherries', 'banana'], ['Alice', 'Bob', 'Carol', 'David'], ['dogs', 'cats', 'moose', 'goose']] def printTable(strlist): colWidth = [0]*len(strlist) # 初始化“列寬度”,col即column為列的意思 for i in range(len(strlist)): # 先迭代矩陣長度,即迭代每個列表 for j in range(len(strlist[0])): # 迭代每列,即迭代每個列表長度,此處可用strlist[0],因為是一個矩陣 if len(strlist[i][j]) > colWidth[i]: # strlist[i][j] 即先[1][1],[1][2],[1][3],[1][4],再[2][1]、[2][2]、[2][3]、[2][4],即逐行比較 colWidth[i] = len(tableData[i][j]) count = 0 for i in range(len(strlist[0])): # 先迭代每個列表的元素個數,即將列印出來的行數, for j in range(len(strlist)): # 再迭代矩陣長度,即將列印出來的列數 print(strlist[j][i].rjust(colWidth[j]), end=' ') #仍然取決先迭代的i,即先將先跌代的標量按順序先迭代完 strlist[j][i] 即先列印[1][1],[2][1],[3][1]再[1][2]、[2][2],[3][2]即橫向列印列 count+=1 if count%len(strlist) == 0: print('') if __name__ == '__main__': printTable(tableData)