为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第3天 Python的字符串

课程名称:Python3 入门教程(新版)

课程章节: Python变量和数据类型

主讲老师:咚咚呛

课程内容

字符串的format

  • 字符串模板
  • 模板数据内容
  • 单个模板数据内容
  • 多个模板数据内容
  • 模板数据内容顺序

字符串的编码

  • python2 需要显示声明编码

字符串的切片

  • 把字符串看作一个列表
  • 字符串的一些操作

课程收获

多行字符串

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀r,表示这是一个 raw 字符串,里面的字符就不需要转义了。

print(r'\(~_~)/ \(~_~)/');

但是r’…'表示法不能表示多行字符串,也不能表示包含’和 "的字符串。

如果要表示多行字符串,可以用三重引号’’’…’’’ 或 “”"…"""表示:

'''
a nice day
go to happy
beautiful shoes,want to fly
'''

还可以在多行字符串前面添加r,把这个多行字符串也变成一个raw字符串。

字符串 format

字符串是Python程序重要的数据类型,到目前为止,我们输出的字符串的内容都是固定的,但有时候通过字符串输出的内容不是固定的,这个时候需要使用format来处理字符串,输出不固定的内容。

字符串format由两个部分组成,字符串模板和模板数据内容组成,通过大括号{},就可以把模板数据内容嵌到字符串模板对应的位置。

# 字符串模板
template = 'Hello {}'

# 模板数据内容
world = 'World'
result = template.format(world)
print(result) # ==> Hello World

# 指定顺序
template = 'Hello {0}, Hello {1}, Hello {2}, Hello {3}.'
result = template.format('World', 'China', 'Beijing', 'imooc')
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.

# 调整顺序
template = 'Hello {3}, Hello {2}, Hello {1}, Hello {0}.'
result = template.format('World', 'China', 'Beijing', 'imooc')
print(result) # ==> Hello imooc, Hello Beijing, Hello China, Hello World.

# 除了使用顺序,还可以指定对应的名字,使得在format过程更加清晰。

# 指定{}的名字w,c,b,i
template = 'Hello {w}, Hello {c}, Hello {b}, Hello {i}.'
world = 'World'
china = 'China'
beijing = 'Beijing'
imooc = 'imooc'

# 指定名字对应的模板数据内容
result = template.format(w = world, c = china, b = beijing, i = imooc)
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.

字符串编码

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这种编码方式被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

在python3中,默认使用UTF-8 Unicode来进行编码,因此我们可以在python中输入任意形式的Unicode字符串,都不会遇到像python2中遇到的问题(在python2中,需要显式指明该字符串是Unicode字符串),如果没有了解过python2,则完全可以忽略这一点,python3提供了更加简单易懂的编码方式.

# coding: utf-8

s1 = '这是中文字符串'
s2 = 'this is an English string'
print(s1)
print(s2)

字符串切片

切片需要在中括号[]中填入两个数字,中间用冒号分开,表示子串的开始位置和结束位置,并且这是半闭半开区间,不包括最后的位置。

不过需要注意的是,在程序的世界中,计数是从0开始的,使用0来表示第一个

字符串可以用 + 进行连接(粘到一起),也可以用 * 进行重复:

3 * 'un' + 'ium' # ===> unununium

相邻的两个或多个 字符串字面值 (引号引起来的字符)将会自动连接到一起,但只能对两个字面值这样操作,变量或表达式不行,如果你想连接变量,或者连接变量和字面值,可以用 +

 'Py' 'thon' # ===> Python

字符串是可以被 索引 (下标访问)的,第一个字符索引是 0,索引也可以用负数,这种会从右边开始数。

注意 -0 和 0 是一样的,所以负数索引从 -1 开始。

除了索引,字符串还支持 切片。索引可以得到单个字符,而 切片 可以获取子字符串:

word = 'Python';

word[0]

word[5]

word[-1]

word[-6]

word[0:2]

word[:2] + word[2:]

注意切片的开始总是被包括在结果中,而结束不被包括。这使得s[:i] + s[i:]总是等于 s

Python 中的字符串不能被修改,它们是 immutable 的。因此,向字符串的某个索引位置赋值会产生一个错误

学习截图

vGK74g.md.png

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消