免费视频教程!零基础学Python系列(5) - 数据类型之string(上)

本节开始我们讲python的string数据类型。

 

Python的字符串用单引号或者双引号括起来表示。

字符串由若干个有序字符组成,但是python中的字符串是不能改变的,也就是说我们不能通过索引去改变某个字符的值。比如:str[1]= ‘x’这样的操作是不被允许的。

 

01

转义字符

 

所谓转义字符,就是在其前面增加右斜杠\后,它并不代表其原本的字符含义,而是转义为另外的含义。比如‘\n’转义后表示一个换行符。

 

Python中用到的转义字符如下表所示:

转义字符

描述

\(在行尾时)

续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\a

响铃

\b

退格(Backspace)

\e

转义

\000

\n

换行

\v

纵向制表符

\t

横向制表符

\r

回车

\f

换页

\oyy

八进制数,yy代表的字符,例如:\o12代表换行

\xyy

十六进制数,yy代表的字符,例如:\x0a代表换行

\other

其它的字符以普通格式输出

# 转义字符
str1 = 'hello,\nworld!'
# 尾部的\是续行符,表示下一行也算作本行的内容。续行符后面不能再有任何字符,包括空格和注释
str2 ='hello,\"world!\"' \
       'I am Tiger.'

print(str1)
print(str2)

输出为:

hello,

world!

hello,"world!"I am Tiger.

对于续行符要注意,它后面不能再有任何字符,包括空格和注释,否则会报错。

 

 

02

截取

 

字符串截取就是从字符串中获取部分我们想到的字符,这是用得非常多的一个操作。

Python提供了非常灵活简单的字符串截取方式。

 

字符串截取语法如下:

变量[头下标:尾下标]

 

这里的下标,就是指的某个字符在字符串中对应的索引值。支持双向索引。我们还是以“hello,world!”这个字符串为例,其索引如下图所示:

 

正向索引,从0开始,往后递增;反向索引,从-1开始,往前递减。我们只需要明确要截取的子串对应的开始索引和结束索引,即可将其截取出来。

 

这里需要注意一点,python的截取语法,是“前闭后开”的。其截取的子串包含“头下标”对应的字符,但是却不包含“尾下标”对应的字符。这点需要特别注意,容易出错。

 

比如,我们要截取“hello”这个子串。[0:5]、[0:-7]、[-12:5]、[-12:-7],这几种方式可以达到相同的效果。

 

下面列出了一些使用的例子,大家可以参考:

# 字符串截取
str3 = 'hello, world!'
sub_str1 = str3[0:5]  # 截取hello
sub_str2 = str3[-6:-1]  # 截取world
print(sub_str1)
print(sub_str2)
print(str3[5])  # 输出第6个字符
print(str3[:5])  # 输出第6个字符之前的所有字符
print(str3[5:])  # 输出第6个字符及以后的所有字符
print(str3[-5:])  # 输出倒数第5个字符及以后的所有字符

 

03

分割

 

有时候我们需要对一个字符串依照某种规则进行分割,得到若干个子串。比如,我们以逗号为分割标识,将“hello,world!”分割为两个子串“hello”和“world!”。

 

Python提供了split方法实现字符串分割功能,其语法为:

变量.split("分割标示符号"[分割次数])

 

# 字符串分割 split
sub_str_list =str3.split(',')
print(sub_str_list)

输出为:

['hello', ' world!']

 

Split会返回一个列表结构,这个结构里面存储了分割之后的所有子串。如果找不到分割标识符号,则返回的列表中只有一个元素,就是原始字符串。

 

看下面的例子,我们指定分割次数后会怎么样:

# 字符串分割 split
sub_str_list =str3.split(',')
print(str3.split('o'))
print(str3.split('o', 1))

输出为:

['hell', ', w', 'rld!']

['hell', ', world!']

 

如果我们不指定分割次数,会分割为3个子串。如果我们指定只分割1次,则被分割成了2个子串。

 

Split只能满足一些简单固定的分割规则,对于比较复杂的规则,我们可以采用正则表达式,它的功能就非常强大了。后面我们会专门拿一个章节来讲解正则表达式,这里不展开了。

 

04

连接

 

我们通常使用下面两种方式来实现字符串的连接:

1、通过加号+实现

2、通过join方法实现

语法: str.join(sequence)

sequence -- 要连接的元素序列,可以是元组或者列表。

 

str1.join([s1,s2, s3])

它的连接结果是:

s1-str1-s2-str1-s3

 

如下实例所示:

# 字符串连接
str3=’ hello, world!’
str4 = ' I am Tiger.'
print(str3 + str4 + " Glad to see you ! ")
print(''.join([str3,str4, " Glad to see you ! "]))
print('**'.join(["aa","bb", "cc"]))  #aa**bb**cc

 

输出为:

hello, world! I am Tiger. Glad to see you !

hello, world! I am Tiger. Glad to see you !

aa**bb**cc

这两种方法实现的效果是一样的,但是他们的实现逻辑却有很大的区别。基于效率的考虑,如果连接的字符串超过2个,建议尽量采用join方法。

加号连接字符串,每连接一个字符串时,系统会分配一次内存,如果连接N个字符串,那么需要分配N-1次内存,性能消耗较大。

而join方法,则是在一开始会计算列表中所有字符串的总长度并一次分配好内存,所以它的性能会高一些。

 

下一节我们继续讲string的操作方法。


本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。

我尽量坚持每日更新一节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值