python08-字符串合集

目录

 

1、字符串的大小写和对齐

2、字符串的查找替换

3、格式化字符串

对齐:[align] 

填充选项([fill])

符号

精度

type 

f字符串


字符串归根是序列,序列就可以使用切片的方法。

x = "12321"
"是回文数" if x == x[::-1] else "不是回文数"

1、字符串的大小写和对齐

>>> x = "I love FishC"
>>> x.capitalize()    #字符串的首字母变成大写,其他变成小写
'I love fishc'
>>> x.casefold()    #所有字母小写
'i love fishc'
>>> x.title()    #所有单词首字母变成大写,其他变小写
'I Love Fishc'
>>> x.swapcase()    #大小写反转
'i LOVE fISHc'
>>> x.upper()    #所有大写
'I LOVE FISHC'
>>> x.lower()    #所有小写,只能处理英文
'i love fishc'

左中右对齐

>>> x = "有内鬼,停止交易!"
>>> x.center(15)    #wide参数若小于字符长度直接原字符输出,空格填充
'   有内鬼,停止交易!   '
>>> x.ljust(15)    #左对齐
'有内鬼,停止交易!      '
>>> x.rjust(15)    #右对齐
'      有内鬼,停止交易!'
>>> x.zfill(15)    #多余宽度前面添加0
'000000有内鬼,停止交易!'
>>> "520".zfill(5)
'00520'
>>> "-520".zfill(5)
'-0520'
>>> x.center(15, "淦")    #用淦代替空格填充
'淦淦淦有内鬼,停止交易!淦淦淦'
>>> x.ljust(15, "淦")
'有内鬼,停止交易!淦淦淦淦淦淦'
>>> x.rjust(15, "淦")
'淦淦淦淦淦淦有内鬼,停止交易!'

2、字符串的查找替换

查找

>>> x = "上海自来水来自海上"
>>> x.count("海")
2
>>> x.count("海", 0, 5)   
1
>>> x.find("海")    #从左往右找,返回索引
1
>>> x.rfind("海")    #从右往左找
7
>>> x.find("龟")    #查不到返回-1
-1
>>> x.index("龟")
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    x.index("龟")
ValueError: substring not found

替换

有关字符串替换的方法 expandtabs(),使用空格来替换制表符,并且返回新的字符串,不要在代码里面混合使用空格和tab。

replace(old,new,count=-1),返回一个将所有old的参数指定的子字符串替换为new参数指定的新字符串,count代表替换次数,默认-1。

translate(table),返回一个根据table参数转换后的新字符串,这个参数的名字叫table,用于指定一个转换规则的表格,表格生成用str.maketrans(x[,y,[,z]]),也就是建立的表格内容替换,如果语句中含有表格的内容就会被替换,没有就不变。类似摩斯密码表;str.maketrans()还支持第三个参数,表示将指定的字符串给忽略。

"在吗,我在你家楼下,快点下来".replace("在吗","想你")
'想你,我在你家楼下,快点下来'

table = str.maketrans("ABCDEFG","1234567")
"i love FishC".translate(table)    #'i love 6ish3'

"i love FishC".translate(str.maketrans("ABCDEFG","1234567"))

"i love FishC".translate(str.maketrans("ABCDEFG","1234567","love"))
#'i  6ish3'

判断

startswith(prefix[,start[,end]]),判断参数指定的子字符串是否出现在字符串的起始位置;对用的endswith(suffix[,start[,end]])判断参数指定的子字符串是否出现在字符串的结束位置。这里发现都有start和end两个可选参数,

x = "我爱python"
x.startswith("我")    #True
x.startswith("你")    #False
x.endswith("py")    #False
x.endswith("on")    #True
x.startswith("我",1)    #False,从索引值为1开始匹配
x.startswith("爱",1)    #True
x.endswith("py",0,4)    #True,从下标为0到下标为4

x = "她爱python"
if x.startswith(("你","我","她")):
    print("匹配成功")    #匹配成功,元组里面

x = "I Love Python"
x.istitle()    #True,判断一个字符串中的所有单词是否都是以大写字母开头,其余字母均为小写
x.isupper()    #False判断一个字符串中所有字母是否都是大写
x.upper().isupper()    #True从左往后依次调用,先将所有字符串全部转换大写后再判断
"""如果判断小写就用islower"""

同样还有其他的判断函数(图源小甲鱼python教学视频)

如果你想判断一个字符串是否为 Python 的保留标识符,就是像 “if”、“for”、“while” 这些关键字的话,可以使用 keyword 模块的 iskeyword() 函数来实现:

>>> import keyword
>>> keyword.iskeyword("if")
True
>>> keyword.iskeyword("py")
False

截取

"    左侧不要留白".lstrip()
#'左侧不要留白'
"右侧不要留白    ".rstrip()
#'右侧不要留白'
"    左右不要留白    ".strip()
#'左右不要留白'
"www.ilovefishc.com".lstrip("wcom.")
#'ilovefishc.com',当截取到指定的参数字符后一直截取到没有指定的为止
#按照单个字符为单位进行匹配剔除,这里剔除'w''c''o''m''.'5个字符从左开始剔除到i匹配不到了结束
"www.ilovefishc.com".rstrip("wcom.")
#'www.ilovefish'
"www.ilovefishc.com".strip("wcom.")
#'ilovefish'

如果只是希望踢掉一个具体的子字符串,那么你可以考虑 removeprefix(prefix) 和 removesuffix(suffix) 这两个方法。它们允许你指定将要删除的前缀或后缀:

>>> "www.ilovefishc.com".removeprefix("www.")
'ilovefishc.com'
>>> "www.ilovefishc.com".removesuffix(".com")
'www.ilovefishc'

拆分和拼接

拆分字符串,言下之意就是把字符串给大卸八块,比如 partition(sep) 和 rpartition(sep) 方法,就是将字符串以 sep 参数指定的分隔符为依据进行切割,返回的结果是一个 3 元组(3 个元素的元组):

>>> "www.ilovefishc.com".partition(".")
#('www', '.', 'ilovefishc.com')按点进行切割

>>> "ilovefishc.com/python".partition("/")
#('ilovefishc.com', '/', 'python')按/进行切割

split(sep=None, maxsplit=-1) 和 rsplit(sep=None, maxsplit=-1) 方法则是可以将字符串切成一块块:

>>> "苟日新,日日新,又日新".split(",")
#['苟日新', '日日新', '又日新']
>>> "苟日新,日日新,又日新".rsplit(",")
#['苟日新', '日日新', '又日新']从右向左
>>> "苟日新,日日新,又日新".split(",", 1)
#['苟日新', '日日新,又日新']从左往右切1次
>>> "苟日新,日日新,又日新".rsplit(",", 1)
#['苟日新,日日新', '又日新']从右往左切1次

拼接:

join(iterable) 方法是用于实现字符串拼接的。虽然的它的用法在初学者看来是非常难受的,但是在实际开发中,它却常常是受到大神追捧的一个方法。字符串是作为分隔符使用,然后 iterable 参数指定插入的子字符串:很有用!!

>>> ".".join(["www", "ilovefishc", "com"])
'www.ilovefishc.com'
>>> "^".join(("F", "ish", 'C'))
'F^ish^C'
>>> "".join(("FishC", "FishC"))
'FishCFishC'

3、格式化字符串

在字符串中,格式化字符串的套路就是使用一对花括号({})来表示替换字段,就在原字符串中先占一个坑的意思,然后真正的内容被放在了 format() 方法的参数中。以下为和  format() 常用的方法。

format_spec     ::=  [[fill]align][sign][#][0][width][grouping_option][.precision][type]
fill            ::=  <any character>
align           ::=  "<" | ">" | "=" | "^"
sign            ::=  "+" | "-" | " "
width           ::=  digit+
grouping_option ::=  "_" | ","
precision       ::=  digit+
type            ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

>>> year = 2010
>>> "鱼C工作室成立于 year 年。"
#'鱼C工作室成立于 year 年。'
>>> "鱼C工作室成立于 {} 年。".format(year)
#'鱼C工作室成立于 2010 年。'
>>> "1+2={}, 2的平方是{},3的立方是{}".format(1+2, 2*2, 3*3*3)
#'1+2=3, 2的平方是4,3的立方是27'
>>> "{1}看到{0}就很激动!".format("小甲鱼", "漂亮的小姐姐")
#'漂亮的小姐姐看到小甲鱼就很激动!'
>>> "{0}{0}{1}{1}".format("是", "非")
#'是是非非'
>>> "我叫{name},我爱{fav}。".format(name="小甲鱼", fav="Pyhon")
#'我叫小甲鱼,我爱Pyhon。'
>>> "我叫{name},我爱{0}。喜爱{0}的人,运气都不会太差^o^".format("python", name="小甲鱼")
#'我叫小甲鱼,我爱python。喜爱python的人,运气都不会太差^o^'

如果我只是想单纯的输出一个纯洁的花括号,那应该怎么办呢?

>>> "{}, {}, {}".format(1, "{}", 2)
'1, {}, 2'
>>> "{}, {{}}, {}".format(1, 2)
'1, {}, 2'

对齐:[align] 

>>> "{:^}".format(250)
'250'
>>> "{:^10}".format(250)
'   250    '
>>> "{1:>10}{0:<10}".format(520, 250)
'       250520       '
>>> "{left:>10}{right:<10}".format(right=520, left=250)
'       250520       '

冒号是必须的,冒号左边是索引和关键字。

填充选项([fill])

在指定宽度的前面还可以添加一个 '0',则表示为数字类型启用感知正负号的 '0' 填充效果:

>>> "{:010}".format(520)
'0000000520'
>>> "{:010}".format(-520)
'-000000520'
>>> "{1:%>10}{0:%<10}".format(520, 250)
'%%%%%%%250520%%%%%%%'
>>> "{:0=10}".format(520)
'0000000520'
>>> "{:0=10}".format(-520)
'-000000520'

符号

"{:+}{:-}".format(520,-520)
#'+520-520',正数前面加正,负数前面加负
"{:,}".format(1234)
#'1,234',千分位分隔符
"{:_}".format(1234)
#'1_234',千分位分隔符
"{:_}".format(123)
#'123'数字个数不够,不显示
"{:,}".format(123456789)
#'123,456,789'

精度

精度([.precision])选项是一个十进制整数,对于不同类型的参数,它的效果是不一样的:

  • 对于以 'f' 或 'F' 格式化的浮点数值来说,是限定小数点后显示多少个数位
  • 对于以 'g' 或 'G' 格式化的浮点数值来说,是限定小数点前后共显示多少个数位
  • 对于非数字类型来说,限定最大字段的大小(换句话说就是要使用多少个来自字段内容的字符)
  • 对于整数来说,则不允许使用该选项值
    "{:.2f}".format(3.1415)
    #'3.14'
    "{:.2g}".format(3.1415)
    #'3.1'
    "{:.6}".format(3.1415)
    #'3.1415'
    "{:.6}".format("i love fishc")
    #'i love'截取功能限定前6位

type 

"{:b}".format(80)
#'1010000'二进制输出
"{:c}".format(80)
#'P'unicode字符输出
"{:d}".format(80)
#'80'十进制
"{:#b}".format(80)
#'0b1010000' 二进制前缀
"{:#o}".format(80)
#'0o120'八进制前缀

"{:.{prec}f}".format(3.1415,prec=2)
#'3.14'

f字符串

>>> year = 2010
>>> f"鱼C工作室成立于 {year} 年"
'鱼C工作室成立于 2010 年'
>>> 
>>> f"1+2={1+2}, 2的平方是{2*2},3的立方是{3*3*3}"
'1+2=3, 2的平方是4,3的立方是27'
>>> 
>>> "{:010}".format(-520)
>>> f"{-520:010}"
'-000000520'
>>> 
>>> "{:,}".format(123456789)
>>> f"{123456789:,}"
'123,456,789'
>>> 
>>> "{:.2f}".format(3.1415)
>>> f"{3.1415:.2f}"
'3.14'

f-字符串更简洁。


来源于bilibili-小甲鱼视频学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值