ydkh

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)
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)

 

 

相关文章: