目录
4、查找与替换
学习各种数据类型特点和使用方法,当拿到数据时,可以判断数据类型提取出自己需要的数据。
一、字符串
(一)字符串的格式化输出
1、格式化运算符
print("%d" % 3.14) # 输出3
print("%d" % 3.99) # 输出3,不会四舍五入
print("%f" % 3.14123456)#输出3.141235
print("%f" % 3.14)#输出3.140000
#取小数点后6位,且会四舍五入
print("%.2f" % 3.1415926)#输出3.14,代表取小数点后2位
%s 是胜任最广泛的占位符,它可以对应任何类型的变量。
print("%s" % 100) # 输出100
print("%s" % 3.14) # 输出3.14
print("%s" % "python") # 输出python
report = "%d年%s公司增长了%.2f%%业绩" %(2019,"腾讯",20.22)
print(report)
#2019年腾讯公司增长了20.22%业绩
#括号要英文格式的,%%要在f后面
2、format函数
每三位用逗号分隔:
print('{:,}'.format(123456789))#输出123,456,789
format函数也可以像%那样来格式化多个参数:
2019年腾讯公司增长了20.22%业绩
report = "{0}年{1}公司增长了{2}%业绩" .format(2019,"腾讯",20.22)
print(report)
{0}表示第一个参数,{1}{2}表示第二、第三个参数,以此类推。这样做的好处是,如果有参数在字符串出现多次,可以不用重复的传入。
s = "{0}摩洛哥{1:,}万人,增长了{1}吨产量,高达{2}美元".format(2020,70000000,180000)
print(s)
#输出2020摩洛哥70,000,000万人,增长了70000000吨产量,高达180000美元
(二)字符串的下标和切片
1、下标
字符串其实也是一种序列,可以理解为一串整齐的按顺序排着队的字符,组成了字符串,那每个字符在队伍中都有自己的位置,这个位置就是下标,又叫作索引。
2、切片
# 从0到末尾CHINA
"CHINA"[:] 或者 "CHINA"[0:5] 或者 "CHINA"[0:]
# 从0到第3个
"CHINA"[:3] 或者 # CHI
# 从第3个到末尾
"CHINA"[2:] # INA
"CHINA"[0:0] # 空字符串
"CHINA"[0:-1] # CHIN
3、步长
第二个冒号表示截取步长,这里的2表示每两个字符取一个,如果不传,默认就是每一个都取。步长也可以为负数,如果传递了一个负数,则表示是从右往左进行截取。最少是1,不存在0步长。
# 每隔两个字符截取一个
"CHINA"[::2] # CIA
# 从右往左每隔两个两个字符截取一个
"CHINA"[::-2] # AIC
#倒序输出字符串
"CHINA"[::-1] # ANIHC
(三)字符串函数
1、去除空白字符函数
空白符包括空格、换行(\n)、制表符(\t)。strip函数只去掉首尾空白字符,并不会去除字符串之间的空白字符。另外 lstrip 和 rstrip 函数,分别去除字符串左边和右边的空白字符。
" abc ".strip()
"\t abc \n".strip()
#输出abc
2、大小写操作
# 将所有字符变成大写
"china".upper() # CHINA
# 将字符串的首字母变成大写
"china".capitalize() # China
# 将所有字符变成小写
"CHINA".lower() # china
# 将每个单词的首字母变成大写
"i have a dream".title() # I Have A Dream
3、字符串判断
判断字符串是否以指定的字符串开头或者结尾
print('china'.islower())
print('china'.isupper())
print('china'.startswith('c'))
#True
#False
#True
4、查找与替换
#password = '123'
#input_password = '456123789'
print(input_pwd.find(password))
# 结果是3,且它的出现的位置是3(下标)。如果没有找到则会返回-1
print(input_pwd.index(password))
# 结果是3,如果找不到密码错误会报错,这是2个函数的区别。
print("abba".count('a')) # 2
print('abba'.count('c'))# 0
print("abba".replace('a', 'b'))
# 结果是'bbbb'
print('apple banana'.replace('apple', 'orange'))
# 结果是'orange banana'
5、字符串长度
内置函数len
len("China") # 5
len("") # 0
len("a") # 1
#字符串长度输出的是整型的数字,代表个数
(四)字符串之电话号码的识别
结合字符操作知识,可以开发一个电话号码识别程序,用户输入一串数字,程序识别它是不是一个有效的电话号码,如果是有效电话号码,我们再识别它是一个固定电话号码、手机号码、还是400号码。用户输入"exit"后,程序退出。
这是一个稍微复杂的需求,在动手写代码之前,我们先分析一下需求。
1、先列举一下常见的几种电话号码形式,手机号码是11位的,以1开头,不同运营商的前三位不一样,由于三位太多了,我们就以前两位来判断,包括13,15,17,18,19 。
2、看固定号码,区号+电话号码的方式,区号可能是三位(010),也可能是四位(0888),电话号码是8位,那加起来一共是11位或12位。
3、最是400电话,这个特征很明显,以400开头,共10位。
更多详情:https://mp.csdn.net/mp_blog/creation/editor/126631867
简化版
cellphone_number_start = "13,15,17,18,19"
telephone_number_start = "010,021,022,025,0888,0555"
while True:
num = input("请输入号码:\n")
if num.strip() == "exit":
#因为前后空格会影响判断,后面有识别是否数字,所以一定要在识别数字之前执行
print("退出")
break
if num == "":
print("您输入为空,请重试")
continue
if not num.isdigit():
print("您输入的无效,请重试")
continue
if num[0:2] in cellphone_number_start and len(num) == 11:
#注意此处是双重条件且len函数用法
print("这是手机号码")
continue
if num.startswith('0'):
if num[0:3] in telephone_number_start and len(num) == 11 or \
(num[0:4] in telephone_number_start and len(num) == 12):
print("这是一个固定号码")
continue
if num.startswith("400") and len(num) == 10:
#此处不能用num[:3] == 400