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

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

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

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

ContractedBlock.gifView Code

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

ContractedBlock.gifView 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

%

格式字符串

实例:

ContractedBlock.gifView Code

执行结果为:

ContractedBlock.gifView Code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python之os、sys和random模块

import os# print(os.getcwd())#获取当前目录,绝对路径# print(os.chdir(../))#更改当前目录,../的意思是退回上一级目录# print(os.getcwd())# print(os.curdir)#当前目录,相对路径# print(os.pardir)#当前目录,相对路径# print(…

审计署计算机培训心得体会,审计署计算机中级培训心得体会2018

《审计署计算机中级培训心得体会.doc》由会员分享,可免费在线阅读全文,更多与《审计署计算机中级培训心得体会2018》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、要,课前要有一定的预习,预习时不必太细致&…

python执行效率有多低_python – Scapy的低性能

我正在创建一个脚本,将来自Tap0的所有流量发送到Eth0,并将来自Eth0的所有流量发送到Tap0.在网上找到很多例子后,我设法让它发挥作用.我遇到的问题是性能非常低. 在不使用脚本的情况下在2个VM之间进行ping操作,所需时间不到1毫秒.使用脚本需要大约15ms. 当我使用scp从VM向另一个…

用计算机写词,用遗传算法让电脑写宋词

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼相逢缥缈,窗外又拂晓.长忆清弦弄浅笑,只恨人间花少. *菊不待清尊,相思飘落无痕.风雨重阳又过,登高多少黄昏.这首《清平乐.*菊》的作者是一台计算机,比我写的好,十分佩服。且平仄、押韵十分工整&#xff0c…

基本数据类型____字典

字典(dictionary) 形式:qq {key:value,key1,value1}>每一对用分号(;),没两队之间用逗号(,)作用:存多个值,key-value键值对的方式存,取值速度快定义&#…

北京交通大学计算机系2018年录取情况,北京交通大学2018年高招录取分数线汇总...

近日,北京交通大学2018年高招录取分数线出炉,考生可查看理工、文史类一本线情况,具体内容如下:为方便您第一时间了解我校在各省的录取分数情况,特将相关数据发布,若数据有误,请以省招办最终公布…

[BZOJ 3647]

BZOJ 3647——可持久化并查集加强版 不会可持久化并查集先去做http://www.cnblogs.com/Fish-/p/8242582.html. 幼稚的以为直接交原来的就好了,结果T了! 加个路径压缩,but一直RE,请了几位大神还是解决不了。。所以先留个坑。。 #in…

bzoj4380[POI2015]Myjnie dp

[POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 368 Solved: 185[Submit][Status][Discuss]Description 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i]。有m个人要来消费,第i个人会驶过第a[i]个开始…

全国计算机等级考试用报名吗,全国计算机等级考试网上报名流程及考生报名使用说明...

全国计算机等级考试网上报名流程及考生报名使用说明附件:考生报名使用说明(一)注册账号和登录1)考生首次登录系统需要注册登录通行证,若考生有通行证账号,可以直接登录。2)考生也可使用其他账号登录,例如使用“QQ账号”登录。点击…

iptables nat实验_【零基础学云计算】LVS负载均衡群集之NAT模式搭建 (实践篇)...

实验原理图实验环境LVS调度器作为web服务器池的网关LVS服务器配置两块网卡分别连接内外网使用轮询(rr)调度算法LVS负载调度器网段规划 内网33网关:192.168.144.1 外网36:12.0.0.1web1 192.168.144.151web2 192.168.144.170nfs服务…

计算机2级ps教学大纲,《PhotoShop》教学大纲

《PhotoShop》教学大纲(本大纲适用广告设计与制作专业)一、课程的性质与任务课程的性质:Photoshop是广告设计与制作专业学生的一门专业必修课,具较强的系统性、创新性、针对性和实用性。学生通过该课程的学习,对会展平面设计工作的性质、任务…

rs232串口驱动_RS232与RS485在性能上有啥区别和联系?老电工总结分析,一目了然...

串口是一种非常通用的设备接口,是仪器仪表设备常用的通信接口,常用于远程采集设备数据或者实现远程控制。串口的开发也比较简单,它是很多工程师最喜欢的接口之一。常见的串口协议有RS-232、RS-422、RS-485等,它是电子工程师面对的…

win7里面计算机叫什么,Win7电脑中的mrt.exe是甚么文件

咱们正在运用Win7体系的时分,只有咱们翻开使命办理便能够看失到有一个mrt.exe 步伐正在运转,也没有知叙mrt.exe 是甚么入程的,否不成以制止。这Win7电脑外的mrt.exe 是甚么文件呢?如今便随小编一同来看看电脑外的mrt.exe是甚么文件…

svn权限配置

转载于:https://www.cnblogs.com/wzlbigdata/p/8329601.html

pytorch gather_【Pytorch】Pytorch-1.1.0 版本新特性

2019年05月01日,Pytorch 1.1.0 版本正式发布啦~https://github.com/pytorch/pytorch/releases/tag/v1.1.0主要的几个功能:1. TensorBoard (currently experimental)2. JIT 的升级 [JIT] Attributes in ScriptModules [JIT] Dictionary and List Support …

服务器宕机自动dns,有哪些同时支持智能解析和宕机自动切换的DNS服务?

RT可以支持按区域、运营商线路智能解析,服务器宕机自动切换解析。免费或者价格不太高的。 目前了解到华为云完全免费,唯独没有宕机监控。DNSPOD如果想实现上述功能,套餐价格不菲……求大佬们推荐青海网友 李志良独一无二 评论:12…

MySQL-5.7.21非图形化下载、安装、连接问题记录

1、安装包下载链接:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-winx64.zip 官网:https://www.mysql.com/downloads/ -> Community ->MySQl Community Sever ->选择与电脑对应的版本DownLoad 2、解压安装包到自定义的文件夹…

c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解

静态链接与动态链接的宏观概述及微观详解第一部分 宏观概述 1. 静态链接静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库的加载和重定位操作(因为所…

winxp上传文件到服务器,通过SQLServer的xp_cmdshell在服务器之间传送文件

xp_cmdshell作为sql Server的扩展存储过程之一,也是sql Server在安全大敌,很多sql安全手册上都要求关闭此过程,这不利用其特性简要实现了一个在sql服务器之间传取文件的功能,在sql2005下测试通过,现贴出代码下&#xf…

Python学习之路:多态实例

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋…