0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python 的数据类型(三):字符串

电子设计 来源:电子设计 作者:电子设计 2020-12-24 15:41 次阅读

各位童鞋很抱歉,由于这段时间比较忙,好久没更新了。今天终于有空来继续跟各位童鞋一起学习python

之前讲到,字符串的定义就是把一些字符序列用引号引起来。例如:

s = 'abc'

上面这行代码的执行过程:先创建一个字符串对象,并初始化里面字符串的值为'a', 'b', 'c'的序列,再把指针s指向这个对象。如下图所示:

字符串的序列操作

我们知道字符串内部是一个字符序列。作为序列,我们可以用下标来索引。例如:

c = s[0] # c = 'a'

c = s[1] # c = 'b'

还可以从字符序列的末尾开始索引,-1代表最后一个字符,-2代表倒数第二个字符,... 例如:

c = s[-1] # c = 'c'

c = s[-2] # c = 'b'

另外字符串还支持切片(slice)操作,取出给定两个下标之间的字符序列(包括开始下标的字符,但不包括结束下标的字符。用数学区间的[a:b)来描述是不是更清楚点呢)。例如:

c = s[0:2] # c = 'ab'

c = s[1:2] # c = 'b'

c = s[1:-1] # c = 'b'

这一点很像verilog的位宽操作,例如:reg s[7:0] = 8'h5a,那我们可以c = s[3:0]来取出3到0位的4'ha。只是verilog是闭区间的。

在切片时,当开始下标是0,冒号前的下标可以省略;结束下标指向最后一个元素,冒号后的下标也可省略。所以上面的切片可以简化成:

c = s[:2] # c = 'ab'

c = s[1:] # c = 'bc'

当开始下标和结束下标都省略时,s[:]表示整个字符序列'abc'。

注意理解 s[1:-1]和s[1:]的区别,前者不包括最后一个字符,而后者包括。

作为字符序列,还支持拼接和重复操作。例如:

s1 = 'abc'

s2 = s1 + 'def' # s2 = 'abcdef'

s3 = s1 * 3 # s3 = 'abcabcabc'

另外我们要注意字符序列的只读性。我们不可以对字符赋值,s[0] = 'd'是非法的。但我们可以迂回:

s = 'abc'

s = 'd' + s[1:]

但要注意,第二句并不是简单的修改s对象的元素值,而是用拼接产生了一个全新对象,并让s指向新的对象。

字符串类型的操作

除了序列操作外,字符串本身作为一种类,自带了很多操作函数(类的方法)。下表列出了一些常用的操作:

index, find

position = index(substr, begin=0, end=len(string))

position = find(substr, begin=0, end=len(string))

描述:index和find函数的作用相同,都是查找子字符串。可以指定开始和结束索引,在一个范围内查找。

返回值:子字符串的起始索引值。index和find的区别是,当没有找到子字符串时,index报错,而find返回-1。

例如:

s = 'abcdefdef'

p1 = s.find('de') # p1 = 3

p2 = s.index('de', 5) # p2 = 6

replace

str_new = replace(substr_old, substr_new[, max])

描述:替换函数,如其名,查找子字符串substr_old,替换成substr_new。第三个参数是可选的,指定替换的最大次数,默认是全部替换。

返回值:返回替换后的新字符串。

例如:

s = 'abcdefdef'

s1 = s.place('de', 'gh') # s1 = 'abchgfhgf'

s2 = s.place('de', 'gh',1) # s1 = 'abchgfedf'

split

list = split(str=' ', num)

描述:split函数用分隔字符str把字符串拆分成若干个子字符串。num指定拆分多少次,若没有指定次数,则为全部拆分。

返回值:拆分后的子字符串列表(下一次我们将要学习列表)。

例如:

s = 'I am learning python'

list1 = s.split(' ') # list1 = ['I', 'am', 'learning', 'python']

list1 = s.split(' ', 2) # list1 = ['I', 'am', 'learning python']

upper, lower

str_new = upper()

str_new = lower()

描述:把字符串转成大写或小写。

返回值:大小写转换后的新字符串。

例如:

s = 'abc'

s1 = s.uppper() # s1 = 'ABC'

s2 = s1.lower() # s2 = 'abc'

strip, lstrip, rstrip

str_new = strip(char=' ')

str_new = rstrip(char=' ')

str_new = lstrip(char=' ')

描述:strip函数用来去除头或尾部的指定字符,默认是去掉空格。

返回值:返回处理后的新字符串。

例如:

s = ' abc'

s1 = s.lstrip() # s1 = 'abc'

s2 = s1.rstrip('') # s2 = 'abc'

startswith, endswith

boolean = startswith(str, begin=0, end=len(string))

boolean = endswith(str, begin=0, end=len(string))

描述:检查字符串是否以str开头或结尾,可以在指定范围内检查。

返回值:如果检查到,返回True,否则返回False。

例如:

s = 'clk_a'

b1 = s.startswith('clk') # b1 = True

s = 'rst_n'

b2 = s.endswith('_n') # s2 = True

format

str_new = '{}{}...'.format(arg1, arg2, ...)

描述:format用来把其它数字、字符串、甚至对象等格式化成字符串。大括号{}用来指定名称、位置、数字的格式等。

返回值:格式化后的新字符串。

例如:

s = 'I am learning {lang}'.format(lang='python') # s = 'I am learning python'

s = '{0} {1} {0}'.format('face', 'to') # s = 'face to face'

s = '{} {} {}'.format('I', 'love', 'python') # s = 'I love python'

第一种,按名称替换。

第二种,按位置替换。

第三种,默认按位置替换,也是最常见的替换方式。

是不是有点像verilog的模块例化?可以按名称,也可以按位置。

format数字格式化

数字格式化成字符串的规则如下表:

例如:

s = "8'h{:0>2x}".format(15) # s = "8'h0f"

s = '{:.2%}'.format(3 / 9) # s = "33.33%"

可能有童鞋要问了“字符串内置这么多函数,一下也记不住啊?” 所以下面内容非常重要(敲黑板)。

1. 怎么看string还内置其它什么函数?

s = 'abc'

print(dir(s))

dir()是一个内置函数,能够查看类的所有属性和方法。结果如下:

2. 那怎么查看具体函数的使用方法呢?

python已经考虑到这个问题了,不需要百度、不需要查看源代码,只需要调用help()函数。例如:

print(help(s.find))

将打印出下面的内容:

有没有被python的贴心功能感动呢?

下一次我们将学习python的列表。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20123
  • 数据类型
    +关注

    关注

    0

    文章

    227

    浏览量

    13498
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
收藏 人收藏

    评论

    相关推荐

    labview扫描字符串怎么用

    介绍如何在 LabVIEW 中使用扫描字符串以及相关的技巧和注意事项。 字符串是 LabVIEW 中的一种基本数据类型,表示一系列字符的序列。扫描
    的头像 发表于 12-29 10:12 622次阅读

    python输出固定长度的字符串

    Python 是一种强大而灵活的编程语言,具有许多用于处理字符串的功能。在 Python 中,有多种方法可以输出固定长度的字符串。下面将详细介绍这些方法。 方法一:使用
    的头像 发表于 11-22 10:41 1215次阅读

    python怎么把字符串变成数字

    Python是目前广泛应用的一种编程语言,它以简洁、易读和灵活的特性被广大开发者所喜爱。在Python中,字符串和数字是两种常见的数据类型字符串
    的头像 发表于 11-22 09:47 1488次阅读

    字符串如何转换成日期型

    同编程语言将字符串转换为日期类型。 正文: 一、Python中的字符串转日期转换 在Python中,使用datetime模块可以方便地将
    的头像 发表于 11-17 16:27 5579次阅读

    redis的五种数据类型底层数据结构

    结构: 字符串(String) 字符串是Redis中最基本的数据类型。在底层,Redis使用简单动态字符串(SDS)来存储字符串。SDS是一
    的头像 发表于 11-16 11:18 381次阅读

    redis的五种数据类型

    Redis是一种高性能的内存数据库,常用于缓存、任务队列、分布式锁等场景。它提供了多种数据类型来满足各种不同的需求,包括字符串(string)、哈希(hash)、列表(list)、集合(set
    的头像 发表于 11-16 11:06 345次阅读

    Python 如何判断字符串是否包含子串

    方法 使用 字符串 对象的 find 方法,如果有找到子串,就可以返回指定子串在字符串中的出现位置,如果没有找到,就返回 -1 >> > "hello, python" . find ( "llo" ) != - 1 True
    的头像 发表于 11-02 10:55 255次阅读

    怎么把int类型数据转换成字符串?

    怎么把 int 类型数据转换成字符串: 看项目有用 micrilib,itoa() 函数 和 sprintf() 能不能用呢?怎么用 比如把 int a=10;转换成字符串 char
    发表于 11-01 08:27

    BASH shell脚本篇—字符串处理

    Bash字符串也是一种数据类型,它用于表示文本而不是数字,它是一组可能还包含数字的字符的组合。
    的头像 发表于 10-16 11:25 329次阅读

    Redis数据类型介绍

    支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。 string(字符串字符串
    的头像 发表于 10-09 10:53 530次阅读
    Redis<b class='flag-5'>数据类型</b>介绍

    Redis的数据类型有哪些

    用的一种数据类型,普通的key- value 存储都可以归为此类。其中Value既可以是数字也可以是字符串。使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。 2、Hash:Hash 是一个键值(
    的头像 发表于 10-09 10:51 404次阅读

    MySQL中用什么数据类型存IP地址

    提到 IP 地址(IPv4),大伙儿脑子里肯定马上能浮现类似于 192.168.0.1、127.0.0.1 这种常见的 IP 地址,然后结合这个问题 “MySQL 中用什么数据类型存 IP 地址?”,于是乎脱口而出用 char 字符串
    的头像 发表于 08-25 14:39 336次阅读
    MySQL中用什么<b class='flag-5'>数据类型</b>存IP地址

    Python2与Python3中对字符串的支持

    其实Python3中对字符串支持的改进,不仅仅是更改了默认编码,而是重新进行了字符串的实现,而且它已经实现了对UNICODE的内置支持,从这方面来讲Python已经和JAVA一样优秀。
    的头像 发表于 07-05 16:15 525次阅读

    python变量与基本数据类型介绍

    1、前言 熟练掌握一门编程语言,最好的方法就是充分了解,掌握基础知识,并亲自体验,多敲代码,熟能生巧。本文首先介绍python基础知识的保留字与标识符,然后将介绍在python中如何使用变量以及各种数据类型
    的头像 发表于 07-05 15:51 542次阅读

    Python中检查字符串包含的方法

    Python 有多种处理字符串的方法。今天我们介绍如何检查一个字符串中是否包含另一个字符串
    的头像 发表于 05-14 16:02 1.4w次阅读