字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。

在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。

创建字符串很简单,只要为变量分配一个值即可

View Code

对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

View Code

如果知道字符的整数编码,还可以用十六进制这么写str:

1 >>> '\u4e2d\u6587'

2 '中文'

由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

Python对bytes类型的数据用带b前缀的单引号或双引号表示

1 >>> x = b'ABC'

2

3 >>>type(x)

4

注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。

以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

1 >>> 'ABC'.encode('ascii')

2 b'ABC'

3

4 >>> '中文'.encode('utf-8')

5 b'\xe4\xb8\xad\xe6\x96\x87'

6

7 >>> '中文'.encode('ascii')

8 Traceback (most recent call last):

9 File "", line 1, in

10 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

在bytes中,无法显示为ASCII字符的字节,用\x##显示。

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

1 >>> b'ABC'.decode('ascii')

2 'ABC'

3

4 >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')

5 '中文'

要计算str包含多少个字符,可以用len()函数:

1 >>> len('ABC')

2 3

3 >>> len('中文')

4 2

len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数:

1 >>> len(b'ABC')

2 3

3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87')

4 6

5 >>> len('中文'.encode('utf-8'))

6 6

可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。

在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。

由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

1 #!/usr/bin/env python3

2 #-*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码

如果.py文件本身使用UTF-8编码,并且也申明了# -*- coding: utf-8 -*-,打开命令提示符测试就可以正常显示中文

访问字符串中的值

Python访问子字符串,可以使用方括号来截取字符串

1 >>> v1 = 'Hello World'

2 >>> v2 = "Hello Python"

3

4 >>> print("v1[0] is %s" %v1[0])

5 >>> print("v2[1:5] is %s" % v2[1:5])

6

7

8 v1[0] isH

9 v2[1:5] is ello

在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符

转义字符

描述

\(在行尾时)

续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\a

响铃

\b

退格(Backspace)

\e

转义

\000

\n

换行

\v

纵向制表符

\t

横向制表符

\r

回车

\f

换页

\oyy

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

\other

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

\xyy

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

字符串运算符

变量a值为字符串"Hello",b变量值为"Python"为例:

操作符

描述

实例

+

字符串连接

a + b 输出结果: HelloPython

*

重复输出字符串

a*2 输出结果:HelloHello

[]

通过索引获取字符串中字符

a[1] 输出结果 e

[ : ]

截取字符串中的一部分

a[1:4] 输出结果 ell

in

成员运算符 - 如果字符串中包含给定的字符返回 True

H in a 输出结果 1

not in

成员运算符 - 如果字符串中不包含给定的字符返回 True

M not in a 输出结果 1

r/R

原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。

print r'\n' 输出 \n 和 print R'\n' 输出 \n

%

格式字符串

实例:

View Code

执行结果为:

View Code

python字符串字面量有哪四种定义方式_Python学习笔记(四)字符串型相关推荐

  1. python字符串字面量有哪四种定义方式_Python进阶16_字符串基础操作

    前面介绍了一下比较晦涩而且深入的字符文本的处理方法,接下来几节将带来一些常规的操作.比较容易入手. 字符串处理 字符串字面量 字符字面量的通过使用:以单引号开始和结束,但是如何处理的是字符串内使用单引 ...

  2. python字符串字面量有哪四种定义方式_python中字符串连接的四种方式

    原博文 2018-12-05 14:28 − 以下实例展示了join()的使用方法 #!/usr/bin/python str = "-"; seq = ("a" ...

  3. mysql的四种连接方式_数据库的四种连接方式分别是什么

    数据库的四种连接方式分别是:1.inner join内连接:2.outer join外连接:3.cross join交叉连接:4.natural join自然连接. 内连接 内连接 ---拼接查询结果 ...

  4. python复数的实部和虚部都是整数嘛_Python学习笔记:从入门到放弃(2)基本语法...

    这次主要就记录一下Python中的基本语法,有标识符,注释,行与缩进,print函数输出以及数字类型和字符串 标志符: 第一个字符必须是字母表中字母或下划线 _ . 标识符的其他的部分由字母.数字和下 ...

  5. python中复数的实部和虚部都是浮点数_Python学习笔记:从入门到放弃(2)基本语法...

    这次主要就记录一下Python中的基本语法,有标识符,注释,行与缩进,print函数输出以及数字类型和字符串 标志符: 第一个字符必须是字母表中字母或下划线 _ . 标识符的其他的部分由字母.数字和下 ...

  6. android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...

    Android学习笔记-保存文件(Saving Files) Android设备有两种文件存储区域: 内部存储和外部存储 ("internal" and "externa ...

  7. python字符串大全_python学习笔记:字符串操作大全

    1.借取字符串str = '0123456789′ print str[0:3] #截取第一位到第三位的字符 print str[:] #截取字符串的全部字符 print str[6:] #截取第七个 ...

  8. C语言结构体的四种定义方式

    1.先定义结构体类型,再定义结构体变量 struct student{int age;char* name; };struct student stu;//stu为student的结构体变量 2.定义 ...

  9. Python如何在循环语句中加入两个变量_python学习笔记(第一章)

    大家好,我是天钧,因为我是今年参加的春季高考并且考上了信息安全专业,在家里自学完C语言(其实就是过一遍),然后开始自学Python,可能后期的笔记大多数以这个Python编程语言为主,跟着我一起学习吧 ...

最新文章

  1. Shutil.move PermissionError: [WinError 82] 无法创建目录或文件,以及PermissionError: [Errno 13] Permission denied
  2. 008_效果和动画的Callback函数
  3. 微信小程序 基础3【组件化开发、自定义组件、全栈开发、使用Express】
  4. layui的富文本编辑器如何上传图片,以及后期处理
  5. std::string删除首字符
  6. [2-sat]HDOJ3062 Party
  7. MongoDB 我的学习笔记
  8. C# 插件构架实战(Jack H Hansen )
  9. C/C++编程:log4cpp使用学习
  10. PyBullet快速上手教程
  11. origin画图修改横坐标
  12. app小程序手机端Python爬虫实战12实现自动化退出考研帮app并清空缓存
  13. 语音的计算机安装方法,英菲克智能语音鼠标PS1怎么安装驱动-英菲克智能语音鼠标安装使用教程 - 河东软件园...
  14. 第二十八章 Caché 命令大全 TSTART 命令
  15. 3.1 n维向量及其运算
  16. Android仿淘宝加入购物车布局效果
  17. SpringBoot+Vue项目医护人员排班系统
  18. 独立于计算机系统的是 用户模式,全国计算机二级ms-office选择题题库(同名4921).pdf...
  19. 手机收不到信号显示无服务器,路由器太远手机接收不到信号怎么办?这里有你想要的答案!...
  20. gdc服务器是什么系统,gdc设置服务器地址

热门文章

  1. “软件宝宝”出生前,安全系列文章(一)
  2. vue 多选自动触发_Vue,初次邂逅(二)
  3. PMP读书笔记(第11章)
  4. SpringCloud Feign注解导入失败
  5. 使用nginx搭建https服务器
  6. SQLServer windows身份验证连接字符串
  7. execCommand全集
  8. 高一学生计算机知识现状分析,关于高中信息技术课教学现状的思考
  9. vue-获取某个组件渲染的Dom根元素
  10. PHP5比PHP4,php4和php5的配置异同比较