Python3关于String模块(importstring)
String中定义的⼀些属性
1 、string模块中定义了⼀些常⽤的属性(包含所有数字,字母,可打印的所有ascii码等)import string
print(string.ascii_letters)# 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
print(string.ascii_lowercase)# 'abcdefghijklmnopqrstuvwxyz'
print(string.ascii_uppercase)# 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
print(string.digits)# '0123456789'
print(string.hexdigits)# '0123456789abcdefABCDEF'
digits)# '01234567'
print(string.printable)# '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~' print(string.punctuation)# '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
print(string.whitespace)# ' \t\n\r\x0b\x0c'
2、⼤⼩写转换
第⼀种:
upper()负责将指定字符串变为⼤写,可以单独使⽤,也可以放到print函数中
lower()负责将指定字符串变为⼩写,可以单独使⽤,也可以放到print函数中
import string
s="abcde"
#放⼊print中使⽤
print(s.upper())# ABCDE
print(s.lower())# abcde
print("abcdef".upper())# ABCDEF
print("QWERT".lower())# qwert
#这⾥注意是通过⽣成新的字符串⽽不是更改原来字符串
s.upper()print(s)# abcde
第⼆种:
title()将给定的字符串中所有单词的⾸字母⼤写,其他全部⼩写
capitalize()将给定的字符串中⾸字母⼤写,其他⼩写
这两个函数主要⽤于⽂稿改写等⽅⾯
import string
s="abcde,qweRTY"
t="abcde qweRTY"
#以,隔开的单词
print(s.title())# Abcde,Qwerty
print(s.capitalize())# Abcde,qwert
#以空格隔开的单词
print(t.title())# Abcde Qwert
print(t.capitalize())# Abcde qwert
第三种:
⼤⼩写反转swapcase()
swapcase()的功能便是将原字符串中的⼤写改为⼩写,⼩写再改为⼤写
s ="qweASDrtZX"
print(s.swapcase())# QWEasdRTzx
3、is判断函数
is判断函数为⼀种判断函数,根据规定字符串判断是否符合结果返回True或者False
主要判断如下:
isdecimal():判断给定字符串是否全为数字
isalpha():判断给定的字符串是否全为字母
isalnum():判断给定的字符串是否只含有数字与字母
isupper():判断给定的字符串是否全为⼤写
islower():判断给定的字符串是否全为⼩写
istitle():判断给定的字符串是否符合title()
isspace():判断给定的字符串是否为空⽩符(空格、换⾏、制表符)
isprintable():判断给定的字符串是否为可打印字符(只有空格可以,换⾏、制表符都不可以)
isidentifier():判断给定的字符串是否符合命名规则(只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符。)import string
# 1234 全是数字为True
print("1234".isdecimal())
# asdf4 中4是数字不是字母为False
print("asdf4".isdigit())
# qwe12@ 中@既不是数字也不是字母为False
print("qwe12@".isalnum())
# asdf全是⼩写为Trueisalpha 函数
print("asdf".islower())
# ADS全是⼤写为True
print("ADS".isupper())
# Wshd,qwe中虽然W⼤写但是第⼆个单词qwe中q⼩写不符合title()所以为False
print("Wshd,qwe".istitle())
# \n为换⾏是空⽩符为True
print("\n".isspace())
# \t为制表符不可打印为False
print("\t".isprintable())
# qe123 符合命名规则为True
print("qe125".isidentifier())
4、字符串填充
1、居中为center(width),这时候原来的字符串将会在中间,扩充物出现在两边。
2、居左为ljust(width),l为lef的缩写,源字符串在左边,填充物出现在字符串的右边。
3、居右为rjust(width), r为right的缩写,源字符串在右边,填充物出现在字符串的左边。
有⼀点需要注意的是,填充物fillchar是可选的,其默认为空格,可以更改为任意字符。
以字符串“qwer”居左填充为长度10的字符串,填充物为“+”为例,代码应该如下:
import string
print("qwer".ljust(10,"+"))
# qwer++++++
4、这⾥单独介绍函数zfill(width),为何着重介绍zfill函数呢?
⼀⽅⾯ zfill(width)函数只需要传⼊参数width即可,填充物为“0”,采⽤居右填充的⽅式
另外⼀⽅⾯该函数会识别字符串的正负,若为“+”或者“-”则不变,越过继续填充
例⼦如下:
import string
# 不加"+""-"纯数字,⽤填充物"0"将字符串前填充满
print("12345".zfill(10))# 0000012345
# 加"-"纯数字,越过"-"⽤填充物"0"将字符串前填充满
print("-125".zfill(10))# -0000012345
# 加"+"数字字母组合,越过"+"⽤填充物"0"将字符串前填充满
print("+qwe125".zfill(10))# +000qwe125
# 加其他符号,⽤填充物"0"将字符串前填充满
print("#qwe12".zfill(10))# 0000#qwe12
5、字符串搜索
1.⼦字符串位置搜索count(sub[, start[, end]])
主要对指定字符串搜索是否具有给定的⼦字符串sub,若具有则返回出现次数。
strat与end代表搜索边界,若⽆写则代表全字符串搜索
import string
# 全部字符串内搜索qwe 出现的次数
print("qwertasdqwezxcqwe".count("qwe"))
# 由于字符串从0开始计数,1为字符串第⼆个,相当于从w开始
print("qwertasdqwezxcqwe".count("qwe",1))
# 从字符串第 2个开始到第15个截⽌,共出现qwe的次数
print("qwertasdqwezxcqwe".count("qwe",1,14))
运⾏结果:
3
2
1
2、字符串开始与结尾判断
startswith(prefix[, start[, end]])
endswith(suffix[, start[, end]])
两个函数作⽤相同,判断函数的开始,或者末尾的字符串是否为指定字符串
与之前的搜索相同,可以给字符串加边界,若⽆则为全字符串搜索
两个函数都属于判断函数,返回结果为True与False
强调:这⾥的不仅可以输⼊⼦字符串,还可以输⼊元组,若为元组时候只要有⼀个成真即为True import string
# 搜索开头位置为qwe 符合条件,为True
print("qwertasdqwezxcqwe".startswith("qwe"))
# 开头位置为字符串下标为1开始,也就是说开头为wer与qwe不同为False
print("qwertasdqwezxcqwe".startswith("qwe",1))
# 结尾位置为qwe符合条件为True
print("qwertasdqwezxcqwe".endswith("qwe","asd"))
运⾏结果:
True
False
True
3、字符串位置锁定find与index函数
find(sub[, start[, end]]) 返回第⼀个⼦字符串的位置信息,若⽆则为-1
rfind(sub[, start[, end]])返回最右边的第⼀个⼦字符串的位置信息,若⽆则为-1
index(sub[, start[, end]]) 返回第⼀个⼦字符串的位置信息,若⽆则为报错
rindex(sub[, start[, end]])返回最右边的第⼀个⼦字符串的位置信息,若⽆则报错
从传参可以看出,查询位置函数也可以限定边界,使⽤⽅法同上函数
import string
s="qweraqwesfgzqweop"
print(s.find("qwe"))
print(s.rfind("qwe"))
print(s.index("qwe"))
print(s.rindex("qwe"))
运⾏结果:
12
12
这⾥需要注意:
以上情况均为到对应⼦字符串,若未到
运⾏结果:find返回-1 index报错,情况如下
6、字符串替换
1、replace(old, new[, count]):将搜索到的字符串改为新字符串
作为替代函数,旧的字符串与新的字符串是必须输⼊的
count是可选择输⼊的参数,代表更改个数。
import string
s="qweraqwesfgzqweop"
# 将字符串全部的qwe 换为asd
place("qwe","asd"))
# 将字符串前两个qwe 换为asd
place("qwe","asd",2))
# 将字符串全部的qew 换为asd 没有则输出原字符串
place("qew","asd"))
2、expandtabs(N)将\t 改为⼀定数量的空格
空格计算⽅式:
N-(之前字符串长度)= 空格数
若N-(之前字符串长度)=0 则空格数为N
若N-(之前字符串长度)<0 则空格数为1
import string
t="qwe\tqwer\tqasdsdf\tas"
pandtabs(4))
第⼀个\t :设定长度为4,之前字符串qwe长度为3,4-3=1替换1个空格
第⼆个\t :设定长度为4,之前字符串qwer长度为4,4-4=0替换4个空格
第三个\t :设定长度为4,之前字符串qsdfsdf长度为7,4-7=-3<0替换1个空格
结果:
7、字符串分割
字符串分割常⽤函数为partition()和rpartition()
partition(sep)对给定字符串进⾏切割,切割成三部分
⾸先搜索到字符串sep,将sep之前的部分为⼀部分,sep本⾝作为⼀部分,剩下作为⼀部分partition()与rpartition()之间⼗分相似,主要不同体现在当字符串中没有指定sep时partition()分为三部分,字符串、空⽩、空⽩
rpartition()分为三部分,空⽩、空⽩、字符串
import string
t="qwertyuasdfghjkl"
print(t.partition("yua"))
print(t.partition("asqw"))
print(t.rpartition("asqw"))
运⾏结果:
('qwert','yua','sdfghjkl')
('qwertyuasdfghjkl','','')
('','','qwertyuasdfghjkl')
另⼀种常见的函数为split(sep=None, maxsplit=-1)和rsplit(sep=None, maxsplit=-1)
split()函数传参两种
sep为切割,默认为空格
maxsplit为切割次数,给值-1或者none,将会从左到右每⼀个sep切割⼀次
rsplit()相同,但是其遍历⽅式从右到左
最常见在输⼊与input连⽤,如下:
import string
t=input().split()
print(t)
8、字符串添加join()
将可迭代数据⽤字符串连接起来 ,⾸先理解什么是可迭代数据,简单理解就是字符串string、列表list、元组tuple、字典dict、集合set。⽽且每个参与迭代的元素必须是字符串类型,不能包含数字或其他类型。
import string
#字符串类型
a="qwer"
print("_".join(a))
#元组类型
b=("a","b","c","d")
print("=".join(b))
#集合类型
c={"qwe","asd","zxc"}
print(" ".join(c))⽚
⾸先第⼀个例⼦为字符串类型,所以每⼀个字符之间都⽤之前的字符串来交叉
同理元组也是,元与元之间都要加⼊字符串“=”
集合也是这样,但是需要注意,集合的⽆需性,所以顺序可能颠倒
以上代码结果如下:
由于参与迭代的每个元素必须是字符串类型,不能包含数字或其他类型。
所以L1=(1,2,3)或者L2=(‘AB’,{‘a’,‘cd’})是会报错的
9、字符串修剪
strip([chars]) lstrip([chars]) rstrip([chars])
strip()是为移除指定字符串char,如果没传⼊参数则为移除空格、制表符、换⾏符
lstrip()中 l为left缩写,函数表⽰从左到右遍历
rstrip()中 r为right缩写,函数表⽰从右边开始遍历
注意移除为到⾮char截⽌,举例⼦如下:
import string
a=" qweasdzxcrtqwe "
print(a.strip())
b="qweasdzxcrtqwe "
print(b.lstrip('q'))
c=" qweasdzxcrtqwe"
print(c.rstrip('qew'))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论