python字符串的四种表达(Python字符串类型介绍)
python字符串的四种表达(Python字符串类型介绍)
2024-07-02 02:39:50  作者:学会作弊  网址:https://m.xinb2b.cn/know/vpi534105.html

一、简介

字符串为Python中常用类型,与Java不同的是,Python既可使用单引号表示,也可使用双引号表示。如下面的例子:

a = "hello world"b = 'i am ok'

上述声明的a和b均为Python中合规的字符串表示形式。当然,若在Java中,单引号表示字符类型,双引号才表示字符串。

若此时使用type()函数来查看字符串的类型,会输出<class 'str'>。

二、下标

所谓下标其实就是索引。在Python中,可通过下标来获取指定位置的字符,如下面的例子:

name = "hello world"print(name[0])print(name[1])print(name[2])

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(1)

这与Java有所不同。在Java中,若想获取指定位置的字符,只能通过字符串的charAt(int index)方法来获取,而非直接指定对应的位置。

三、获取子串

若需在Java中获取子串,则可通过字符串对象的subString方法来获取。而在Python中,获取子串则是通过所谓的切片操作来完成。所谓切片就是从待操作对象截取部分内层。除字符串外,列表、元组、集合等也都支持该操作。

其语法格式为:

序列[起始坐标:结束坐标:步长]

需要说明的是,使用切片功能时,并不会包含结束位置处的数据。若不指定结束坐标,则默认为序列的长度。若不指定步长,则默认为1。

下面为对应的例子:

s = "hello world"# 只指定起始位置print(s[6:])# 指定结束位置print(s[:5])# 指定起始位置和结束位置print(s[6: len(s)])s2 = "a b c d e f g"# 只指定步长print(s2[::2])# 指定起始位置、结束位置和步长print(s2[6: len(s2): 2])

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(2)

此外,Python切片的起始位置和结束位置还支持负数。如下面的例子:

s = "hello world"# 只指定起始位置print(s[-5:])# 指定起始位置和结束位置print(s[-len(s): -6])

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(3)

这与Java有所区别,因为在Java中,使用subString方法时,起始索引和结束索引均不支持负数。

四、常用方法

对于字符串常用的方法而言,大致可分为三类,分别是:查找、修改和判断。

4.1 查找

所谓查找就是查找某个子串在字符串中出现的位置或次数。下面简单介绍一下常用的查找方法。

find和rfind

find方法用于检测某个字符是否存在于该字符串中,若存在,则返回该子串开始处的下标;若不存在,则返回-1。而rfind与find作用类似,区别在于,rfind是从字符串的末尾开始向前进行查找。

下面为对应的语法格式:

# find字符串序列.find(子串, 开始位置下标, 结束位置下标)# rfind字符串序列.rfind(子串,开始处下标,结束位置下标)

需要说明的是,开始位置下标和结束位置下标均可进行省略,当开始位置下标省略时默认为0,当结束位置下标省略时默认为字符串的长度。

下面给出对应的示例:

s = "Tom and Jerry and Spike and Tuffy"print("首个and出现的位置:", s.find("and"))print("从下标7开始,and首次出现的位置:", s.find("and", 7))print("首个ands出现的位置:", s.find("ands"))print("从末尾开始,首个and出现的位置:", s.rfind("and"))print("从下标0开始,到倒数第12个字符结束,倒数首个and出现的位置:", s.rfind("and", 0, -12))

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(4)

index和rindex

index方法用于检查某个子串是否被包含在该字符串中,若包含则返回子串开始位置下标,否则抛异常。rindex与index类似,只不过是从末尾开始查找而已。

这两个方法与Java中的indexOf和lastIndexOf方法有相似的作用。当然,indexOf和lastIndexOf无法指定结束位置下标,且起始位置下标不能指定为负数。

下面是对应的语法格式:

# index字符串序列.index(子串,开始位置下标,结束位置下标)#rindex字符串序列.rindex(子串,开始位置下标,结束位置下标)

需要说明的是,开始位置下标和结束位置下标可进行省略,当开始位置下标省略时默认为0,当结束位置下标省略时默认为字符串的长度。

下面给出对应的例子:

s = "Tom and Jerry and Spike and Tuffy"firstIndex = s.index("and")print("是否包含and字符串:", firstIndex > -1, ", 对应的坐标为:", firstIndex)index = s.index("and", 7)print("是否包含and字符串:", index > -1, ", 对应的坐标为:", index)lastIndex = s.rindex("and")print("是否包含and字符串:", lastIndex > -1, ", 对应的坐标为:", lastIndex)rightIndex= s.rindex("and", 7, -10)print("是否包含and字符串:", rightIndex > -1, ", 对应的坐标为:", rightIndex)notIndex = s.index("ands")print("是否包含and字符串:", notIndex > -1, ", 对应的坐标为:", notIndex)

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(5)

count

count用于查询某个子串在字符串中出现的次数,其格式为:

字符串序列.count(⼦串, 开始位置下标, 结束位置下标)

需要说明的是,开始位置下标和结束位置下标均可进行省略,当开始位置下标省略时默认为0,当结束位置下标省略时默认为字符串的长度。

下面给出对应的例子:

s = "Tom and Jerry and Spike and Tuffy"print("and出现的次数为:", s.count("and"))print("下标从7到最后,and出现的次数为:", s.count("and", 7))print("ands出现的次数为 :", s.count("ands"))

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(6)

4.2 修改

所谓修改就是通过函数对字符串中的数据进行修改。下面介绍一下常见的修改函数。

replace

replace的作用是将字符串中指定的子串替换为目标子串,其语法格式为:

字符串序列.replace(旧子串,新子串,替换次数)

对于替换次数而言,若未指定,则默认为该子串出现的次数;若指定次数小于出现次数,则替换指定次数;若指定次数大于出现次数,则替换实际出现的次数。

该方法与Java中的字符串的replace有相同的作用。当然,Java中的replace方法无法指定替换次数。

此外,替换操作并不会对原字符串有任何影响,其只会返回替换后的新字符串。

下面给出对应的示例:

s = "Tom and Jerry and Spike and Tuffy"# 将旧子串替换为新子串print("将s中的and替换为or后为:", s.replace("and", "or"))# 指定替换次数,小于该子串出现的次数print("将s中的and替换为or, 替换次数为2,替换后为:", s.replace("and", "or", 2))# 指定替换次数,大于该子串出现的次数print("将s中的and替换为or, 替换次数为4,替换后为:", s.replace("and", "or", 4))print("进行替换操作后,原字符串为:", s)

执行后结果如下:

python字符串的四种表达(Python字符串类型介绍)(7)

split 和 join

split作用是根据指定的字符来分隔字符串,而Join的作用则是根据指定的字符串来将由多个字符串组成的字符序列进行合并。其语法格式为:

# spilt字符串序列.split(分割字符, num)# join 连接字符串.join(多个字符串组成的序列)

对于split的num而言,表示分隔字符出现的次数。当然,若未指定该次数,则默认为分隔符出现的次数;若指定的次数小于分隔符出现的次数,则会分割指定次数;若指定的次数大于分隔符出现的次数,则分割时按分隔符实际出现的次数进行分割。

spilt和join方法在Java中也有类似实现,当然,Java中的split方法无法指定分割次数。

下面为对应的例子:

s = "Tom and Jerry and Spike and Tuffy"# 根据and进行分割print("根据and进行分割后结果为:",s.split("and"))# 根据and进行分割,只分割2次print("根据and进行分割,分割次数为2,分割后结果为:",s.split("and", 2))# 根据and进行分割,只分割4次print("根据and进行分割,分割次数为2,分割后结果为:",s.split("and", 4))# 根据 " "进行分割print("根据空格进行分割后结果为:", s.split(" "))listStr = ["Tom", "Jerry", "Spike", "Tuffy"]# 用下划线进行连接print("用下划线进行连接后为:", "_".join(listStr))# 用...进行连接print("用...进行连接后为:", "...".join(listStr))

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(8)

capitalize 和 title

capialize和title都可将字符串的首字母变为大写。区别在于,capitalize的作用是将整个字符串的首字母改为大写,而title则是将字符串的各单词的首字母变为大写,其语法格式为:

# capitalize字符串.capitalize()# title字符串.title()

需要说明的是,当字符串被capitalize方法转换后,除首字母保持大写外,其余字符均会变为小写。而title则是除各单词的首字母外,其余字母都会被改为小写。这两个方法暂未在Java中找到原生实现。

下面给出对应的示例:

s = "Tom and Jerry and Spike and Tuffy"print("执行capitalize方法后结果为:", s.capitalize())print("每个单词的首字母转换为大写后结果为:", s.title())s2 = "PutAndPoll"print("转换后结果为:", s2.title())

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(9)

lower 和 upper

lower和uppder用于改变字符串的大小写。其中,lower是将字符串全部转为小写,而upper则是将字符串全部转为大写。当然,若为数字或其他非字母的数字,则会被忽略。其语法格式为:

# lower字符串.lower()# upper字符串.upper()

这两个方法在Java也有类似实现,lower类似于toLowerCase方法,而upper则类似于toUpperCase方法。

下面为对应的示例代码:

s = "Tom and Jerry and Spike and Tuffy"print("全部转换为小写后:", s.lower())print("全部转换为大写后:", s.upper())

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(10)

lstrip、rstrip和strip

这三个函数都可删除字符串的空白字符,区别在于,lstrip是删除字符串左侧的空白字符,rstrip是删除字符串右侧的空白字符,而strip是将字符串两侧的空白字符都进行删除。其语法格式为:

# lstrip字符串.lstrip()# rstrip字符串.rstrip()# strip字符串.strip()

对于这三个方法来说,Java只实现了类似strip方法,也就是trim方法。

下面是对应的示例代码:

s = " Tom and Jerry and Spike and Tuffy "print("删除左侧的空白字符后为:", s.lstrip(), ", 长度为:", len(s.lstrip()))print("删除右侧的空白字符后为:", s.rstrip(), ", 长度为:", len(s.rstrip()))print("删除两侧的空白字符后为:", s.strip(), ", 长度为:", len(s.strip()))

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(11)

ljust、rjust和center

这三个方法实现对效果类似于对齐,ljust是左对齐,rjust是右对齐,而center则是中心对齐。当然,若原字符串的长度小于指定长度时,会使用指定的字符串进行填充;若原字符串长度大于指定长度,则自己返回原字符串。其语法格式为:

# ljust字符串.ljust(长度,填充字符)# rjust字符串.rjust(长度,填充字符)# center字符串.center(长度,填充字符)

需要说明的是,填充字符串只能是单个字符,若为多个字符,则会抛出异常。

下面给出对应的示例代码:

s = "hello"# 默认为空格机械能填充print("左对齐并填充到10位:", s.ljust(10))# 使用指定字符进行填充print("左对齐并填充到10位:", s.ljust(10, "."))# 默认为空格机械能填充print("右对齐并填充到10位:", s.rjust(10))# 使用指定字符进行填充print("右对齐并填充到10位:", s.rjust(10, "."))# 默认为空格机械能填充print("中心对齐并填充到10位:", s.center(10))# 使用指定字符进行填充print("中心对齐并填充到10位:", s.center(10, "."))

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(12)

4.3 判断

所谓判断就是通过函数来确定该字符串是否符合特定条件,其返回结果为布尔值。下面简单介绍一下常见的判断类函数。

startswith 和 endswith

startwith用于判断该字符串是否以指定的子串开头,而endswith则用于判断该字符串是否以指定的子串结尾。其语法格式为:

# startswith字符串序列.startswith(⼦串, 开始位置下标, 结束位置下标)# endswith字符串序列.endswith(⼦串, 开始位置下标, 结束位置下标)

这两个方法在Java中也有对应的实现,startswith对应startsWith,endswith对应endsWith。区别在于,Java中的实现不支持设置结束位置坐标。

下面为对应的示例代码:

s = "hello world, are you ok"print("该字符串是否以hello打头:", s.startswith("hello"))print("该字符串从下标5开始到结尾,是否存在以hello打头的子串:", s.startswith("hello", 5))print("该字符串是否以ok结尾:", s.endswith("ok"))print("该字符串从开始到倒数第三的下标的子串是否以ok结尾:", s.endswith("ok", 0, -3))

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(13)

isalpha、isdigit、isalnum和isspace

这四个函数用于对字符串是否为字母或数字进行判断。其中,isalpha用于判断该字符串非空且全部为字母,isdigit用于判断该字符串是否非空且全部为数字,isalnum用于判断该字符串是否非空且全部为数字或字母,ispace则用于判断该字符串是否全部为空白字符。

其语法格式为:

# isalpha字符串.islapha()# isdigit字符串.isdigit()# isalnum字符串.isalnum()# isspace字符串.isspace()

下面给出对应的示例:

s1 = "hello"s2 = "12345"s3 = "hello12345"s4 = "hello12345_"print("s1是否非空且全部为字母:", s1.isalpha())print("s2是否非空且全部为字母:", s2.isalpha())print("s3是否非空且全部为字母:", s3.isalpha())print("s4是否非空且全部为字母:", s4.isalpha())print("s1是否非空且全部为数字:", s1.isdigit())print("s2是否非空且全部为数字:", s2.isdigit())print("s3是否非空且全部为数字:", s3.isdigit())print("s4是否非空且全部为数字:", s4.isdigit())print("s1是否非空且全部为字母或数字:", s1.isalnum())print("s2是否非空且全部为字母或数字:", s2.isalnum())print("s3是否非空且全部为字母或数字:", s3.isalnum())print("s4是否非空且全部为字母或数字:", s4.isalnum())s5 = "a b c d "s6 = " "print("s5是否全部为非空字符:", s5.isspace())print("s6是否全部为非空字符:", s6.isspace())

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(14)

仔细观察,可以发现Python中判断是否数字的函数除isdigit外,还有两个,分别是:isnumeric和isdecimal。这三者的区别在于,isdigit判断的是是否为数字字符,其认为合法的字符有:Unicode数字和数字,但不包括罗马数字、汉字数字及小数;isnumeric判断的是是否为数值字符,包括:Unicode数字、数字、汉字数字,但却不包括小数和罗马数字,当然,也有说包含罗马数字的,但我尝试后发现并不包含;isdecimal则判断的是是否为十进制数字字符,包括:Unicode数字、数字,但不包括罗马数字、汉字数字和小数。

下面给出对应的示例:

s1 = "123"s2 = "3.14"s3 = "IV"s4 = "十贰"print(s1, "是否为digit:", s1.isdigit())print(s2, "是否为digit:", s2.isdigit())print(s3, "是否为digit:", s3.isdigit())print(s4, "是否为digit:", s4.isdigit())print(s1, "是否为decimal:", s1.isdecimal())print(s2, "是否为decimal:", s2.isdecimal())print(s3, "是否为decimal:", s3.isdecimal())print(s4, "是否为decimal:", s4.isdecimal())print(s1, "是否为numerical:", s1.isnumeric())print(s2, "是否为numerical:", s2.isnumeric())print(s3, "是否为numerical:", s3.isnumeric())print(s4, "是否为numerical:", s4.isnumeric())print("iii")

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(15)

isupper、islower和istitle

isupper用于判断字符串是否全部为大写,islower用于判断字符串是否全部为小写,istitle则用于判断字符串的各单词的首字母是否大写。下面为对应的语法格式:

# isuppper字符串.isupper# islower字符串.islower# istitle字符串.istitle

下面为对应的例子:

s1 = "Tom and Jerry"s2 = "this is a boy"s3 = "GOOD"s4 = "Oh, My God"print(s1, "是否全部为小写: ", s1.islower())print(s2, "是否全部为小写: ", s2.islower())print(s3, "是否全部为小写: ", s3.islower())print(s4, "是否全部为小写: ", s4.islower())print(s1, "是否全部为大写: ", s1.isupper())print(s2, "是否全部为大写: ", s2.isupper())print(s3, "是否全部为大写: ", s3.isupper())print(s4, "是否全部为大写: ", s4.isupper())print(s1, "是否各单词为首字母大写: ", s1.istitle())print(s2, "是否各单词为首字母大写: ", s2.istitle())print(s3, "是否各单词为首字母大写: ", s3.istitle())print(s4, "是否各单词为首字母大写: ", s4.istitle())

执行结果如下:

python字符串的四种表达(Python字符串类型介绍)(16)

  • 非京籍幼升小朝阳(非京籍朝阳区幼升小资料准备总结)
  • 2024-07-02非京籍朝阳区幼升小资料准备总结非京籍家长为孩子上学准备材料,需提前1年开始筹划,主要材料有以下(我在朝阳,所以可能不完全适用于其他区,但大致材料基本差不多)以下仅代表2022年的政策,仅作参考我们是北京市无房无户口无工作居住证的外。
  • 梦见猪头是什么意思(梦见猪头是什么预兆)
  • 2024-07-02梦见猪头是什么预兆梦见猪头,财运上有贵人相助对于听到的信息,要多留个心眼,说不定其中就暗藏商机,只等着你去挖掘出惊喜职员梦见猪头,说明你的工作运不错,可得到意外收入未婚者梦见猪头,则爱情可获得成功商人梦见猪头,会有赚钱。
  • 抓凤筋的方法(抓凤筋的方法介绍)
  • 2024-07-02抓凤筋的方法介绍抓凤筋是对肌肤与肌肉进行揉捏,是中医按摩的一种俗称,属于捏法在适当部位,利用手指把皮肤和肌肉从骨面上捏起来,叫做捏法捏法和拿法,有某些类似之处,但是拿法要用手的全力,捏法则着重在手指上拿法用力要重些,。
  • 适合60岁的口红(这两款很大气)
  • 2024-07-02这两款很大气深豆沙色,这个口红颜色既有深度可以最大限度凸显60岁年龄的的阅历和知性,又能给偏衰老的肌肤带来一些气色,也日渐加深的唇色也比较接近涂抹后显得比较端庄优雅,对衣服颜色搭配也不怎么挑,关键是更不挑肤色还能。
  • 赵丽颖变化历程(从黑料女王到形象大使)
  • 2024-07-02从黑料女王到形象大使娱乐洪荒少女独家博文/头条号出道10年,近3年爆红,缔造这样的演艺圈奇迹非赵丽颖莫属!日前赵丽颖被授予河北省旅游形象大使,再添荣誉,祝贺她!29岁的赵丽颖从昔日的“黑料女王”到被网友齐喊“赵丽颖滚出娱。
  • 王子文唐艺昕综艺节目叫什么(王子文唐艺昕胡杏儿)
  • 2024-07-02王子文唐艺昕胡杏儿如果你看完《狂飙》以后剧荒了,王子文唐艺昕胡杏儿艾伦刘凯主演的《今生也是第一次》可以去瞅瞅讲述了三位妈妈生宝宝及之后面临的事情,三个故事线并行,很有意思王子文饰演的路远方是位女强人,喜欢看女强文的千万。
  • 豆腐肉丸子怎么做炸酥香(香炸豆腐肉丸子做法介绍)
  • 2024-07-02香炸豆腐肉丸子做法介绍材料:北豆腐400克、猪肉馅300克、小香葱2根、生姜5克、淀粉30克、黑胡椒粉10克、料酒10毫升、精盐5克、麻辣鲜2克、鸡粉1克猪肉馅放入盆中,加入料酒,麻辣鲜,黑胡椒粉朝一方向搅拌,至肉馅上劲成。
  • 广西南宁一年四季温差如何(南北方冬天到底差距在哪)
  • 2024-07-02南北方冬天到底差距在哪东博社报道,许多北方的朋友们如果没有亲自来过南方,恐怕是无法理解南北方冬天的差距有多大~现在这个季节,北方城市已经是一片白茫茫,但是在中国这一城市,却还是绿意盎然,看起来和春天夏天没什么差别,甚至路边。
  • 洗面奶避坑与推荐(2022年上半年的差评)
  • 2024-07-022022年上半年的差评还好我没用过差评很多的洗面奶用来用去还得是这仨洗面奶油性皮肤用旁氏洗面奶干性皮肤用瑷尔博士洁颜蜜黄黑皮肤想美白的可以用维她白洗面奶现在大家好像都不只有一支洁面白天晚上还有皮肤状态好或不好都是分开用的我。
  • 形容男人很壮实的句子(有什么形容男人壮实的句子)
  • 2024-07-02有什么形容男人壮实的句子这人四肢健壮,宽圆的肩膀,高挺的胸脯,结实得像钢桩铁柱一般这是一个粗线条的汉子,浓眉大眼,皮肤黝黑,肩膀宽阔,身材高大,站着像一座石塔,跑起来有如一阵狂风他粗眉大眼,大鼻子、阔嘴巴,再加上大手大脚,模。