05字符串

# -*- coding: utf-8 -*-
#===============================================================================
#第五章 字符串

'''
目录
5.1 字符串的基本操作
5.2 格式化字符串
5.2.1 字符串格式化基础
5.2.2 模板字符串
5.2.3 字符串的format方法
5.2.4 更进一步控制字符串格式化参数
5.2.5 字段宽度、精度和千位分隔符
5.2.6 符号、对齐、用0填充和进制转换
5.3 字符串方法
5.3.1 center方法
5.3.2 find方法
5.3.3 jion方法
5.3.4 split方法
5.3.5 lower方法、upper方法和capwords方法
5.3.6 replace方法
5.3.7 strip方法
5.3.8 translatr方法与maketrans方法
'''


# 5.1字符串的基本操作

#===============================================================================
# 所有标准的序列操作也能对字符串适用,但是字符串都是只读的,这点和元组一样
#===============================================================================
'''
#测试
s1="helloworlde"
print(s1[0])
print(s1[6:9])
print(s1[6:])
print(s1[::2])
s2="ab"
print(3*s2)
print('a' in s2)
print('c' in s2)
print(len(s1))
print(max(s1))
print(min(s1))
'''


#5.2格式化字符串

#===============================================================================
# 5.2.1字符串格式化基础
# 字符串中传入字符串类型的参数用 %s ,如,a="h %s t %s e" b=("ss","cc"),那么a % b="h ss t cc e" ,b是元组,不能是列表
# %f为浮点型参数,对浮点的设置在%f中间,如四位小数就是 %.4f
# %d为整数型参数
# 在字符串中有%时,应为%%,否则会报错
#===============================================================================
'''
#测试
a="PI时圆周率,它的值是%0.4f"
from math import pi
x=(pi,)
print(a % x)
b="昨天%ss说这件事的成功率是%d%%"
y=("老师",45)
print(b%y)
'''

#===============================================================================
# 5.2.2模板字符串
# 在string模块中提供了用来格式化字符串的Template类,它可以用同一个值替换所有相同的格式化参数
# Template类的格式化参数用美元$开头,后面跟着格式化参数名称
# 格式化时,需要使用Template类的substitute
#Template中,参数后面挨着字符串是字母时,要使用{},如,,${s}asdwqa
# 在字符串中有$时,应为$$,否则会报错
#===============================================================================
'''
#测试
from string import Template
a=Template("最近,$s是8点起床,$s天天都要先去看看小狗狗")
print(a.substitute(s="我"))
b=Template("${s}saszxcns")
print(b.substitute(s="我"))
c=Template("$asd$$相当于多少$qwe")
d={}
d["asd"]=20
d["qwe"]="英镑"
print(c.substitute(d))
'''

#===============================================================================
# 5.2.3字符串的format方法
# format是字符串本身的格式化方法,使用时用{}。如:"{}{}{}".format(1,2,3)的结果就是123
# 也可以指定参数,如:"{a}{c}{b}".format(a=11,b=2,c=3)的结果就是132
# 如果混合应用就是没指定的参数放前面。字符串中没指定的就会按没指定的参数顺序放入
# 如果{}中是数字的话,就是按照参数的编号放入,编号从0开始
# 如果要从列表中取值,如:列表a,字符串中{name[0]}的参数就是name=a
# 如果要从模块中取参数,如:导入模块moth,字符串中{mod._name}和{mod.pi}的参数就是mod=math
#===============================================================================
'''
#测试
print("张{}、李{}、王{}、赵{}".format(3,4,5,6))
print("张{d}、李{c}、王{a}、赵{b}".format(a=3,b=4,c=5,d=6))
print("张{d}、李{}、王{a}、赵{}".format(3,4,a=5,d=6))
print("张{2}、李{0}、王{1}、赵{3}".format(3,4,5,6))
x=[7,8,9]
print("张{}、李{a[1]}、王{}、赵{}".format(3,4,5,a=x))
import math
print("张{mod.__name__}、李{}、王{mod.pi}、赵{}".format(3,4,mod=math))
'''

#===============================================================================
# 5.2.4更进一步控制字符串格式化参数
# format还可以对参数进行更多的控制,如:"{x!s} {x!r} {x!a}".format(x="中")的结果:中 '中' 'u4e2d'
# !s是原值,!r是reper函数,
# !a是字符串转为Unicode编码,c是整数解释为ASCII
# b是整数转为二进制,o是整数转为八进制,d是整数转为十进制
# x是整数转为十六进制,字母用小写,X会转化为大写
# e是十进制转为科学计数法,用小写e表示,E会转为为大写
# f是十进制转为浮点数。会将特殊值(nan是无法计算时返回的符号和inf表示无穷大)转化为小写,F会转化为大写
# g是如果整数值得位数超过6,就是e,没超过就是f。G会转为为大写
# %是数值转为百分比形式
#===============================================================================
'''
#测试
print("{x!s} {x!r} {x!a}".format(x="中"))
print("{x:c}、{x:b}、{x:o}、{x:d}、{x:x}、{x:X}".format(x=14))
print("{x:e}、{x:E}、{x:f}、{y:F}、{x:g}、{x:G}、{y:g}、{y:G}".format(x=123456.0001,y=123456789.001))
print("{x:%}".format(x=0.56))
print("{:F} {:f}".format(float("nan"),float("inf")))
'''

#===============================================================================
# 5.2.5字段宽度、精度和千位分隔符
# 使用f格式化时,会默认保留6位小数,format可以设置整数和小数的位数
# 如设置输出字符的长度 {num:10}或{num:>10},如果字符串的长度小于10,就会右对齐,左边空格补全输出,大于10就原值输出
# 可以设置小数的位数,如{num:.2f} num=10.124,结果是:10.12
# 千分位分隔符:{:,} 参数: (100*100),结果是:10,000
#===============================================================================
'''
#测试
print("{:10}".format(3.25461))
print("{:>10.2f}".format(3.25461))
print("{:<10.2f}".format(3.25461))
print("{:^10.2f}".format(3.25461))
print("{:^{a}.2f}".format(3.25461,a=10))
print("{:,}".format(10**10))
'''

#===============================================================================
# 5.2.6符号、对齐、用0填充和进制转换
# {:02.0f} 中第一个0表字符串长度不足的用0补全,2表示字符串长度为2,第二个0表示小数点后面的忽略,f表示参数时浮点型
# 需要在前方显示负号时:{:^=10.2f} 参数:-5.43 结果:负号在前,5.43在后,中间是^符号
#===============================================================================
'''
#测试
from math import pi
print("{:018.3f}".format(pi))
print("{:0{a}.0f}章的{:03.0f}节".format(5,3,a=4))
print("{:$^20}".format("美元"))
print("{:=10.2f}".format(-pi))
'''


#5.3字符串方法

#===============================================================================
# 5.3.1center方法:
# 使字符串在指定宽度的区域内居中显示,并在左右补全指定的字符串。
# 如:"a".center(5, "0"),结果:00a00
# 5.3.2find方法
# 在大字符串中查找子字符串,可以指定开始查找的位置和指定结束查找的位置。找到就返回第一个字符的索引,否则返回-1
# 如:"asdfghjkasdfghjk".find("a",5,14)
# 5.3.3jion方法
# 连接序列中的元素,与字符串连接的必须也是字符串
# 如: "*".join('list') 结果:l*i*s*t
# a='','li','stlist','';print("/".join(a)) 结果:/li/stlist/
# 5.3.4split方法
# 通过分隔符将字符串分割,没参数的话会将所有空格作为分隔符
# 如:'asdhfasda'.split("s") 结果:['a','dhfa',"da"]
# 'I Love You'.split() 结果:['I','Love','You']
# 5.3.5lower方法、upper方法和capwords方法
# lower:将字符串所有字母转化为小写
# 如:"Asd".lower() 结果:"asd"
# upper:将字符串所有字母转化为大写
# 如:"Asd".upper() 结果:"ASD"
# capwords:是string模块的函数:将独立的单词的首字母转化为大写。
# 如:string.capwords("that's ok"),结果:That's Ok
# 5.3.6replace方法
# 将原字符串中的指定的子字符串替换为另外一个字符串
# 如:"I Love You".replace("Love","Like") 结果:I Like You
# 5.3.7strip方法
# 截取字符串前后指定的字符,没参数的话就默认为空格
# 如:" a s d " .strip() 结果:'a s d'
# " *& a*s&d*asd& *".strip("& *") 结果: "a*s&d*asd"
# 5.3.8translate方法与maketrans方法
# maketrans:在使用translatr之前,用这个方法创建一个替换表,然后调用translatr方法根据table替换相应的字符
# translate:将原字符串中的指定的单个字符串替换为另外单个字符。效率比replace快
# 如:s="patkona",,table=s.maketrans("ak","*$"),,s.translate(table),,结果"p*t$on*"
#===============================================================================


'''
#练习题
#1.控制台先输入一个总字符串,然后循环执行:输入要统计出现次数的字符,直到输入end退出循环,用format
s=input("请输入一个长字符串:")
while True:
s1=input("请输入要查找的字符串:")
i1=0
i2=0
if s1=="end":
print("欢迎下次使用")
break
while True:
a=s.find(s1,i1)
if a!=-1:
i1=a+1
i2+=1
else:
break
print("'{}'字符串出现的次数为{}".format(s1,i2))
#2.控制台输入一个大于0的整数,然后利用format输出一个*塔
n=int(input("请输入一个大于0的整数:"))
i=0
while i<n:
a=(2*i+1)*"*"
print("{:^{len}}".format(a,len=2*n-1))
i+=1
'''

猜你喜欢

转载自www.cnblogs.com/zengsen666/p/12093396.html