Day05
一.字符串
1.定义字符串
Python 中字符串被定义为引号之间的字符集合。
Python 支持使用成对的 单引号 或 双引号。

s1 = 'day day up!'
l = "sc dfsv dggs"
s2 = 'a \ b c'
s3 = 'i l \\ u'
s4 = 'y re \ me \''
print(s1,type(s1))
print(l)
print(s2)
print(s3)
print(s4)

day day up! <class 'str'>
sc dfsv dggs
a \ b c
i l \ u
y re \ me '

如果要定义多行字符串,可以使用三个双引号

strs = """
如果你太累
及时的道别没有罪
gg
"""
print(strs)

如果你太累
及时的道别没有罪
gg

2.Python 的常用转义字符

python每行字符增加编号 python字符串前面加上序号_元组


原始字符串只需要在字符串前边加一个英文字母 r 即可。

print(r'\\,\',\",\n,\t,\r')

\\,\',\",\n,\t,\r

2.处理字符串的常用方法
(1)切片与拼接

s1 = 'something just like this'
print(s1[2:-1])
print(s1[:2]+'u kk'+s1[2:])

mething just like thi
sou kkmething just like this

(2)大小写变换

str = 'as df gG jJ Kl qqqqQQQQQ\n'
print(str.capitalize(),str.lower(),str.upper(),str.swapcase())

As df gg jj kl qqqqqqqqq
 as df gg jj kl qqqqqqqqq
 AS DF GG JJ KL QQQQQQQQQ
 AS DF Gg Jj kL QQQQqqqqq

capitalize() 将字符串的第一个字符转换为大写。
lower() 转换字符串中所有大写字符为小写。
upper() 转换字符串中的小写字母为大写。
swapcase() 将字符串中大写转换为小写,小写转换为大写。

(3)count(str, beg= 0,end=len(string)) 返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数。

lirics = 'jeff tom jeck 茫茫人生 好像荒野'
print(lirics.count('je'),lirics.count('茫'))
print(lirics.count('je',0,2),lirics.count('茫',-2,-1))

2 2
1 0

(4)endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串 suffix 结束,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。
startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串 substr 开头,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。
rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找。

lirics = 'jeff tom jeck 茫茫人生 好像荒野'
print(lirics.endswith('野'))
print(lirics.startswith('s'))
print(lirics.find('茫'))
print(lirics.rfind('茫'))


True
False
14
15

isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。

lirics = 'jeff tom jeck 茫茫人生 好像荒野'
num = '235689'
print(lirics.isnumeric(),num.isnumeric())

False True

(5)ljust(width[, fillchar])返回一个原字符串左对齐,并使用fillchar(默认空格)填充至长度width的新字符串。
rjust(width[, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width的新字符串。
lstrip([chars]) 截掉字符串左边的空格或指定字符。
rstrip([chars]) 删除字符串末尾的空格或指定字符。
strip([chars]) 在字符串上执行lstrip()和rstrip()。

lirics = ' 1 jeff  2 '
print(lirics.ljust(15,'a'))
print(lirics.rjust(15,'a'))
print(lirics.lstrip(),lirics.rstrip())
print(lirics.strip())


1 jeff  2 aaaa
aaaa 1 jeff  2 
1 jeff  2   1 jeff  2
1 jeff  2

(6)partition(sub) 找到子字符串sub,把字符串分为一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回(‘原字符串’,’’,’’)。
rpartition(sub)类似于partition()方法,不过是从右边开始查找。
replace(old, new [, max]) 把 将字符串中的old替换成new,如果max指定,则替换不超过max次。

lirics = 'jeff tjjom jeck 茫茫人生 好像荒野'
print(lirics.partition(' '),lirics.rpartition(' '))
print(lirics.replace('jeck','单车'))
print(lirics.replace('j','p',2))

('jeff', ' ', 'tjjom jeck 茫茫人生 好像荒野') ('jeff tjjom jeck 茫茫人生', ' ', '好像荒野')
jeff tjjom 单车 茫茫人生 好像荒野
peff tpjom jeck 茫茫人生 好像荒野

(7)split(str="", num) 不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔num个子字符串,返回切片后的子字符串拼接的列表。

str = 'he ro is imm ortal'
print(str.split())
print(str.split('i'))
print(str.split(' ',2))

['he', 'ro', 'is', 'imm', 'ortal']
['he ro ', 's ', 'mm ortal']
['he', 'ro', 'is imm ortal']

splitlines([keepends]) 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数keepends为 False,不包含换行符,如果为 True,则保留换行符。

str6 = 'I \n Love \n LsgoGroup'
print(str6)
print(str6.splitlines())
print(str6.splitlines(True))

I 
 Love 
 LsgoGroup
['I ', ' Love ', ' LsgoGroup']
['I \n', ' Love \n', ' LsgoGroup']

(8)maketrans(intab, outtab) 创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
translate(table, deletechars="") 根据参数table给出的表,转换字符串的字符,要过滤掉的字符放到deletechars参数中。

li = 'just like animals'
intab = 'some'
outtab = 'anyt'
trantab = li.maketrans(intab,outtab)
print(trantab)
print(li.translate(trantab))
print(li)

{115: 97, 111: 110, 109: 121, 101: 116}
juat likt aniyala
just like animals

3.字符串格式化
(1)Python format 格式化函数

str = "{1} Love {0}".format('me', 'Lsgogroup')  # 位置参数
print(str)  # Lsgogroup Love me

str = "{a} Love {b}".format(a='I', b='Lsgogroup')  # 关键字参数
print(str)  # I Love Lsgogroup

str = "{0} Love {b}".format('I', b='Lsgogroup')  # 位置参数要在关键字参数之前
print(str)  # I Love Lsgogroup

str = '{0:.1f}{1}'.format(27.658, 'GB')  # 保留小数点后一位
print(str)  # 27.7GB

python每行字符增加编号 python字符串前面加上序号_python每行字符增加编号_02

print('%c' % 97)  # a
print('%c %c %c' % (97, 98, 99))  # a b c
print('%d + %d = %d' % (4, 5, 9))  # 4 + 5 = 9
print("我叫 %s 今年 %d 岁!" % ('小明', 10))  # 我叫 小明 今年 10 岁!
print('%o' % 10)  # 12
print('%x' % 10)  # a
print('%X' % 10)  # A
print('%f' % 27.658)  # 27.658000
print('%e' % 27658)  # 2.765800e+04
print('%E' % 27658)  # 2.765800E+04
print('%g' % 27.658)  # 27.658
text = "I am %d years old." % 22
print("I said: %s." % text)  # I said: I am 22 years old..
print("I said: %r." % text)  # I said: 'I am 22 years old.'

(2)格式化操作符辅助指令

python每行字符增加编号 python字符串前面加上序号_元组_03

print('%5.1f' % 27.658)  # ' 27.7'
print('%.2e' % 27.658)  # 2.77e+01
print('%10d' % 10)  # '        10'
print('%-10d' % 10)  # '10        '
print('%+d' % 10)  # +10
print('%#o' % 10)  # 0o12
print('%#x' % 108)  # 0x6c
print('%010d' % 5)  # 0000000005

二.序列
1.list(sub) 把一个可迭代对象转换为列表。
tuple(sub) 把一个可迭代对象转换为元组。

b = '差不多冬至 一早一晚还是有雨'
a = list(b) 
c = tuple(b)
print(a)
print(c)

['差', '不', '多', '冬', '至', ' ', '一', '早', '一', '晚', '还', '是', '有', '雨']
('差', '不', '多', '冬', '至', ' ', '一', '早', '一', '晚', '还', '是', '有', '雨')

2.len(sub) 返回sub包含元素的个数
max(sub)返回序列或者参数集合中的最大值
min(sub)返回序列或参数集合中的最小值
sum(iterable[, start=0]) 返回序列iterable与可选参数start的总和。
sorted(iterable, key=None, reverse=False)对所有可迭代的对象进行排序操作。
enumerate(sequence, [start=0]) 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
a = list(enumerate(seasons))
print(a)  # [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
b = list(enumerate(seasons, 1))
print(b)  # [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

for i, element in a:
    print('{0},{1}'.format(i, element))

zip([iterable, …])
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9,11,12]

zipped = zip(a, b)
print(zipped)  # <zip object at 0x000002E0B29DA248>
print(list(zipped))  # [(1, 4), (2, 5), (3, 6)]
zipped = zip(a, c)
print(list(zipped))  # [(1, 7), (2, 8), (3, 9)]

a1, a2, a3 = zip(*zip(a, b,c))
print(list(a1))  # [1, 2, 3]
print(list(a2))  # [4, 5, 6]
print(list(a3))  #[7, 8, 9]

总结:有点累。