python教程(三)之字符串操作

3.字符串-1.格式

#注意:字符串适用之前所有的列表操作,索引、切片、乘法等等
#在这里先简单复习一下之前的列表
a=["hello","world","!","python"]
# print(a[:-1])#['hello', 'world', '!']
#再来对字符串进行一次
b="hello world!python"
# print(b[:-6])#hello world!,ok没有问题
#接下来试试赋值
# b[:-6]="welcome"
# print(b)#TypeError: 'str' object does not support item assignment
#想对字符串进行切片赋值,结果失败了,因为字符串不能修改,一定记住 
#那么如果我们要实现自定义的字符串需要做什么,看下面
c="hello world!%s"
changVal="python"
# print(c%changVal)#hello world!python
#%s是转换说明符,指明哪里是需要插入自定义内容的部分

#这样看起来也许有点乱,那么看看正规方法有哪些
d="hello world!{}".format("python")
# print(d)#hello world!python
#format方法将花括号部分的内容替换为自定义的参数

d="{1} world!{0}".format("python","hello")
# print(d)#hello world!python
#结果一样,这里0和1代表format中参数的索引,我特意换了一下位置,注意一下
#所以format方法不需要按照顺序写入参数

d="{name} is {my} favorite language"
# print(d.format(name="python",my="my"))#python is my favorite language
#format同样支持键值对的方式赋值
#如果需要{}的内容,可以在外层再套一层{}

d="{name} is {{my}} favorite language"
# print(d.format(name="python",my="i"))#python is {my} favorite language
#这样就保留了{}并且也不需要担心参数中相同的名字


3.字符串-2.格式进阶

#接下来看看更复杂的格式写法
a="π is {:.2f}"
# print(a.format(3.1415926))#π is 3.14
#如果对格式有特殊要求,一定要使用{:XXX}这种格式
#上面的.2f就是XXX的内容,意思是浮点数保留两位小数
#所以format中参数才没有全部显示出来

b="{0} readed {1} pages {bookName} today"
# print(b.format("I",35,bookName="《The Ring》"))
#I readed 35 pages 《The Ring》 today
#像这样混合使用索引与键值对的方式也是可以的
#但不要{}和{1}混用,注意

#对了,{}中还可以是某个模块的引用,例如mod._name_,但目前不用深入了解


3.字符串-3.更多格式

#宽度、精度和千位分隔符

#1.宽度:只设置宽度则未填满部分以空格填充

a="num is {:10} baby"
# print(a.format(66)+"\n"+a.format("Tom"))
# num is         66 baby
# num is Tom        baby
#这里的宽度指定了10,字符串和数字处理空余宽度的方式不同,这点记一下

#2.精度:精度并非只是数字,例如{:.2f},精度为2,但f代表是浮点数,并且除了f
#还有更多处理方式,具体可查询“字符串格式设置的类型说明符”

#由于之前已经使用过单独的精度处理,这里用宽度+精度的方式
b="num is {:10.1f}"
# print(b.format(1231.522))#num is     1231.5

#3.千位分隔符
c="a{:,}m"
# print(c.format(10**50))
# a100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000m
#再来一个混合使用的
c="They have {num:20,.2f} people"
print(c.format(num=3500.663))
#They have             3,500.66 people
#注意一下,千位分隔符应在宽度与精度的.之间


3.字符串-4.填充与对齐

#1.填充:填充用于处理由于宽度的原因,字符串可能出现的空白
a="this is {:020}"
# print(a.format(35))#this is 00000000000000000035
#在宽度和冒号之间的部分就是填充,除了0以外,还可以是+、-或者空格,默认就是空格

#2.对齐:分为左对齐、右对齐和居中
b="{:*^20}"#*****Helloworld*****
b="{:*<20}"#**********Helloworld
b="{:*>20}"#Helloworld**********
# print(b.format("Helloworld"))
#这里也简单说下,除了上面说的那些,还有一些符号也可以作为填充
#注意:经测试b="{:*20}"这种写法会导致错误,也就是填充最好不要单独使用
#应当配合对齐符号一起使用,这样就不会报错了

#python对于携带负号的数字内容有个很贴心的功能
#通过=这个对齐符号,可以实现数字符号与数字之间进行填充
c="{:*=20}\n{:*=20}"
# print(c.format(35,-35))
#                  35
#-                 35
#如果需要填充特殊符号,参考下面这种写法
# c="{:*=20}\n{:*=20}"
# ******************35
# -*****************35

#+则可以根据参数值来给予正负值的表现,像这样
d="{:+.2f}\n{:+.2f}"
# print(d.format(3.1415,-3.1415))
#+3.14
#-3.14
# d="{:.2f}\n{:.2f}" 
# print(d.format(3.1415,-3.1415))
#3.14
#-3.14
#灵活应用即可

# #这个符号比较复杂,会将参数转换为另一种格式的数据,根据参数类型转换为不同的结果
e="{:b}" #b这个类型说明符会将参数转为二进制
print(e.format(11))#1011

e="{:#b}"
print(e.format(11))#0b1011,0b是二进制的标志


3.字符串-5.格式嵌套

#这里举一个简单的例子,当需要分两次设置字符串的格式时怎么办
#因为可能会出现用户需要自己设置一些格式的情况,这就不能将格式写死

contentLen=int(input("请设置宽度:"))
ageLen=3
nameLen=int(contentLen-ageLen)

head_content="{{:{}}}{{:>{}}}".format(nameLen,ageLen)
main_content="{{:{}}}{{:>{}}}".format(nameLen,ageLen)
#注意这里,因为获取一次结果后两层花括号会变为一层,所以要计算好花括号的排列
print("*"*contentLen)

print(head_content.format("姓名","年龄"))

print("-"*contentLen)

print(main_content.format("张三",15))
print(main_content.format("李四",16))
print(main_content.format("王五",17))

print("="*contentLen)
# 请设置宽度:35
# ***********************************
# 姓名                               年龄
# -----------------------------------
# 张三                               15
# 李四                               16
# 王五                               17
# ===================================

3.字符串-6.字符串方法

#相比之前的列表,字符串的方法非常多,这里举一些常用的例子
#其他的方法可以去官网找到

#center将字符串居中并填充内容
a="python"
print(a.center(20,"*"))#*******python*******

#find查找字符串,返回第一个匹配字符串的索引
b="http://www.baidu.com"
print(b.find("baidu"))#11
#还可以指定起始和终止位置
print(b.find("baidu",1,20))#11
#没找到返回-1
print(b.find("baidu",1,8))#-1

#join合并元素
dirs="","usr","data","image"
c="/".join(dirs)
print(c)#/usr/data/image
c="D:"+"\\".join(dirs)
print(c)#D:\usr\data\image,这里注意\用了两次,因为\是转义符,\\才能输出\
#这同样适用在列表上,只要元素是字符串类型
cArr=["1","2","3","4"]
print("/".join(cArr))#1/2/3/4


#lower将所有字符变为小写
d="Hello World"
print(d.lower())#hello world
#一般这种方法使用在对内容筛查上,因为普通的find不能区分大小写
#注意这个方法不适用于列表,但可以使查找字符串小写,并在全小写的列表中查找
dArr=["hello world","hella world"]
print(d.lower() in dArr)#True

#replace将指定字符串替换为另一字符串
e="Hello World Javascript"
print(e.replace("Javascript","Python"))#Hello World Python
#注意这里的方法都不会修改原字符串,因为字符串不能修改!!

#split与join相反,将字符串分割
f="http://www.baidu.com"
print(f.split("."))#['http://www', 'baidu', 'com']
#split参数可以为空,会将单独或多个空白符作为分割位置

#strip清除首尾部分的空格或特殊字符
g="***  Welcome to here  !!!***"
print(g.strip(" !*"))#Welcome to here
#首尾部所有和参数一致的符号内容都被清除,包括空白,但中间的空格不会清除

#translate是replace的升级加强版,replace只能替换一种字符,这个可以替换多个
h="Translate is better then replace"
#但使用translate必须要先创建转换表
hTable=str.maketrans("es","ab")#像这样
print(h.translate(hTable))#Tranblata ib battar than raplaca
#这里参数一一对应,e替换a,s替换b,可接受更多这样的替换
#maketrans接受第三个参数,默认删除与第三个参数一致的内容
hTable=str.maketrans("es","ab"," ")#像这样
print(h.translate(hTable))#Tranblataibbattarthanraplaca
#将所有的空格都删除了,包括中间的部分
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值