Python字串

thoustree發表於2021-04-18

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程式設計快速上手  讓繁瑣工作自動化》)

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)
View Code
# (字串)右對齊列印矩陣.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)

 

 

相關文章