前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3学习笔记 | 四、Python的类型与运算-字符串(上)

Python3学习笔记 | 四、Python的类型与运算-字符串(上)

作者头像
TeamsSix
发布2019-09-24 16:26:54
9500
发布2019-09-24 16:26:54
举报

一、字符串简介

在Python里字符串是一个有序的字符的集合,用来存储和表现基于文本的信息。字符串可以用来表示能够像文本那样编辑的任何信息:符号和词语、在入道内存中的文本的内容、Internet网址和Python程序等。

在Python里字符串被划分为不可变序列这一类别,这意味着这些字符串所包含的字符存在从左至右的位置顺序,并且他们不可以在远处修改。字符串在Python里属于一个序列类型的对象类别,在后面介绍的列表,元组都是序列类型。在这章对文本的操作,很多都能应用于序列类型的对象类别。

二、字符串常量

在Python里有很多种方法来表示字符串: • 单引号:’Text”1”‘ • 双引号:”Text’1’” • 三引号:’’’…Lines…’’’,”””…Lines…”””. • 转义字符:”Line1\tadded tab\nLine2”

• Raw字符串:r”C:\My\new\Directory\file.exe” • Python 3.x中的Byte字符串:b’Te\x01xt’ • Python 2.x中的Unicode字符串:u’my\u0020text’

在Python 3.x里默认是使用Unicode方式存储字符串,在Python 2.x里默认是使用Latin-1方式存储字符串,因此不能直接识别中文。

代码语言:javascript
复制
# -*- encoding=utf8 -*-

在Python2.x脚本文件加上上面一句话就能正常使用中文。

1、转义

跟其他开发语言相通,Python也有转义字符:(反斜杠)

当我们在一个字符串里需要同时使用单引号(‘)和双引号(“)的时候,根据我们所使用的表示字符串的引号类型进行转义。

代码语言:javascript
复制
>>>'a"b\'c'

在这里,我们要输入的字符串为a”b’c。

因为我们使用单引号来表示字符串的开始和结尾,所以b后面的单引号需要转义。当我们使用双引号来表示字符串,我们需要在双引号前面使用反斜杠进行转义:

代码语言:javascript
复制
>>>s = "a\"b'c"

除了这两个,我们还有很多反斜杠加上单个字符来进行转义的。

\newline:忽视新行(连续)#newline就是按键盘上的enter(或return)

\ :反斜杠,因为反斜杠本身就是转义字符,所以两个反斜杠才能表示一个。

\’ :单引号

\”:双引号

\a:响铃

\b:倒退(一位)

\f:换页(下一页,同一列。特定终端下可用。)

\n:新行(换行)

\r :返回(返回到开始)

\t :水平制表符

\v :垂直制表符

\uhhhh:Unicode 16位的十六进制值

\Uhhhhhhhh:Unicode 32位的十六进制值

\xhh:十六进制值

\ooo:八进制值

\0:Null(不是字符串结尾)

\other:不转义

转义测试:

代码语言:javascript
复制
>>> print('a\0b\0c')
a b c
>>> print('t\te\ex\t\ta\an\nd\dEND')
t       e\ex            an
d\dEND
>>> print('\u0043')
C
>>> print('\U00000043')
C

2、raw印制转义

在Python里我们有的时候是需要印制转义的。比如,当有个Windows的目录如下:

代码语言:javascript
复制
>>> print('C:\newfile\files')
C:
ewfileiles

这个时候,要是按正常来说,\n和\f都会被转移,但我们写双斜杠又麻烦,这个时候可以使用raw字符串来印制转义。

代码语言:javascript
复制
>>> print(r'C:\newfile\files')
C:\newfile\files

这个时候其值会跟写的完全一样,当然,我们也可以写成如下:

代码语言:javascript
复制
>>> print('C:\\newfile\\files')
C:\newfile\files

但是还是没有使用印制转义方便,特别是在路径很长的时候。

三、字符串操作

1、len()

在Python里有很多函数,可以对字符串进行操作:len()是看字符串长度的。

代码语言:javascript
复制
>>> print(len('小小哆啦'))
4

当我们使用unicode的时候,按中文字符的个数显示,但使用python2.x里的默认 字符编码,就会是三倍的数值。

因为Python3开始,默认字符编码是unicode,所以在Python3.x里是没有问题的。

2、合并字符串

字符串合并,重复等,跟数字的操作类似:

代码语言:javascript
复制
>>> 'Dora'+'Emon'
'DoraEmon'
>>> 'Dora'*7
'DoraDoraDoraDoraDoraDoraDora'

这里的第二个操作可以为我们节省很多字符输入,比如我们需要输入如下:

代码语言:javascript
复制
>>> print('-----……-----')     #80个“-”
-----……-----

这个可以使用如下方法简单实现:

代码语言:javascript
复制
>>> print('-'*80)
-----……-----

当需要字符合并的时候,如下方法也可以,但不建议使用。

代码语言:javascript
复制
>>> 'Dora''Emon'
'DoraEmon'
>>> 'Dora' 'Emon'
'DoraEmon'

3、顺序提取字符

当我们需要对每个字符串进行操作的时候,可以如下进行操作:

代码语言:javascript
复制
>>> for DaXiong in 'DoraEmon':
...     print(DaXiong,end=' ')
...
D o r a E m o n

这个意思是,我们从a字符串(序列)里按顺序提取字符,进行操作。关于循环,后面在函数章节讲解。

4、判断存在字符

我们需要知道某个字符是否在一个字符串的时候,可以使用in或者not in来判断:

代码语言:javascript
复制
>>> 'D' in 'DoraEmon'
True
>>> 'D'not in 'DoraEmon'
False
>>> 'X' in 'DoraEmon'
False

5、字符串分片

我们也可以对字符串分片,比如对DoraEmon,我们只需要第一个字符,第三个字符,或者中间两个字符,后两个字符等等。

代码语言:javascript
复制
>>> Dora='DoraEmon'
>>> Dora[1],Dora[5],Dora[-3]
('o', 'm', 'm')
>>> Dora[1:5]
'oraE'
>>> Dora[-5:-1]
'aEmo'
>>> Dora[3:]
'aEmon'
>>> Dora[:-5]
'Dor'
>>> Dora[:]
'DoraEmon'

看一下在Python里对字符串的分段是如何进行的,例如:text=“ThisIsTestText”

提取单个字母时,需使用字母前的数字。比如:h,就是1或者-13,提取范围时是开始字母的前面的数字到最后字母的后面数字。比如h到x,就是[1,13]或者[-13,13]或者[1,-1]或者[-13,-1],从开始到某个字母就可以[:3];从某个字幕到结尾就是[3:]。

分片操作还可以有第三个参数,间隔。我们要第一个字母开始,每隔一个字母显示,结果应该是“DrEo”

代码语言:javascript
复制
>>> Dora='DoraEmon'
>>> Dora[::2]
'DrEo'

或者从第二个字母开始:

代码语言:javascript
复制
>>> Dora[1::2]
'oamn'

或者我们要倒过来:

代码语言:javascript
复制
>>> Dora[::-1]
'nomEaroD'
>>> Dora[-1:1:-1]
'nomEar'

6、字符串转换

当我们需要对字符串大小写等操作的时候,需要对字符串转换成相应的代码。这个时候我们就需要两个函数:ord和chr,ord是把一个字符转换成数字,chr是把数字转换成单个字符。

代码语言:javascript
复制
>>> ord('D')
68
>>> chr(68)
'D'
>>> ord('小')
23567
>>> chr(23567)
'小'

注:在Python3.x里可以直接使用中文字符,但是在Python2.x就不能直接用了。

用这两个函数,可以对字符串转换进行简单的大小写操作了,比如:把一个字符串里的内容全转换成大些:

代码语言:javascript
复制
>>> DORA=''  #初始化DORA
>>> Dora='DoraEmon'  #设置Dora
>>> for DaXiong in Dora:  #循环,按顺序提取Dora字符串内容
...     DaXiong_code=ord(DaXiong)  #字符转换成ascII码
...     if 97<=DaXiong_code and DaXiong_code <=122:  #当值大于等于97(a的值)或小于等于122(z的值)
...         DORA+=chr(DaXiong_code-32)  #在值的基础上减32(大小写之间的差距)
...     else:...         DORA+=DaXiong  #其余情况不变
...
>>> DORA
'DORAEMON'

7、字符串序列

在Python里字符串算是序列,但是字符串是不可修改的对象,所以如下操作不能正常被执行:

代码语言:javascript
复制
>>> Dora='DoraEmon'
>>> Dora[3]='DaXiong'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

但是我们可以重新给原来的变量赋值:

代码语言:javascript
复制
>>> Dora='DaXiong'+Dora[3:]
>>> Dora
'DaXiongEmon'

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TeamsSix 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、字符串简介
  • 二、字符串常量
  • 1、转义
  • 2、raw印制转义
  • 三、字符串操作
  • 1、len()
  • 2、合并字符串
  • 3、顺序提取字符
  • 4、判断存在字符
  • 5、字符串分片
  • 6、字符串转换
  • 7、字符串序列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档