文档章节

走进Python世界(五)数据类型 2. 字符串(String)

Garrry
 Garrry
发布于 2015/07/20 13:31
字数 1473
阅读 127
收藏 3

字符串String

使用引号定义的一组可以包含数字,字母,符号(非特殊系统符号)的集合。

如: 

Strval=“This is a test!”
Strval1='This is a test!'
Strval2="""This is a test"""

三重引号(DocString)

Python三重引号允许字符串跨越多行,包括逐字换行符,制表符和其他特殊字符。

三重引号语法由三个连续的单引号或双引号。

#!/usr/bin/python

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print para_str;

当执行上面的代码中,产生以下结果。请注意如何每一个特殊字符被转换到打印形式,一直到最后的换行符之间的字符串“up”结束闭三重引号。还要注意的是发生或者使用显式回车在一行或它的转义代码(\ n)的尾部的换行:

this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up.



需要注意的是,python会认为 成对的引号之间的内容为字符串内容。

如下面的例子 会有语法错误

say=’let‘s go’

 File "<stdin>" , line1
 say=’let‘s go’
          ^
 SyntaxError:invalid syntax


正确的做法是

如果只包含单引号: 使用双引号来包含字符串

如果包含单引号,双引号: 使用双引号来包含字符串,并且字符串内的双引号用转义字符 \ 来转义

say=“let‘s \" go”


转义字符

下表是未转义非打印字符的列表,可以用反斜线符号来表示。

转义字符被解释;在一个单引号和双引号字符串。

反斜线 

符号

十六进制

字符

描述
\a 0x07 铃声或警报
\b 0x08 退格键
\cx
Control-x
\C-x
Control-x
\e 0x1b 转义
\f 0x0c 换页
\M-\C-x
Meta-Control-x
\n 0x0a 新一行
\nnn
八进制表示法,其中n的范围为0.7
\r 0x0d 回车
\s 0x20 空格
\t 0x09 Tab键
\v 0x0b 垂直制表
\x
字符x
\xnn
十六进制表示法,其中n的范围是从0.9,a.f,或AF


字符串特殊操作符

操作符 描述 例子
a= Hello b=Python
+ 串联- 对操作符的两侧值增加

a + b 的值为 HelloPython

* 重复 - 创建新的字符串,链接相同的字符串的多个副本 a*2 的值为 -HelloHello
[] 切片- 从给定的索引字符指定 a[1] 的值为 e
[ : ]

范围切片 - 给定的范围内的字符

可以给定三个值,起始索引,结束索引,步长值

结束值的索引之前的会被取出来

省略起始索引,从0开始

省略结束索引,到末尾。

如果索引值为负数的话,则从末尾开始

步长值则表示,在切片范围取值的时候没间隔多少个字符串取出一个字符,默认值为1

如果步长值为负数也可表示 从右往左取

a[1:4] 的值为 ell

a[:4]的值为Hell

a[1:]的值为ello

a[-4:-1]的值为ello

a[::2]的值Hlo

in 成员 - 如果一个字符存在给定的字符串中,则返回true H in a 结果值为 1
not in 成员 - 如果输入的字符不给定的字符串中不存在,则返回true M not in a 结果值为 1
r/R 原始字符串- 禁止转义字符的实际意义。语法原始字符串是完全一样的普通字符串,除了原始的字符串运算符,字母“r”,这之前的引号。在“r”可以小写(r)或大写字母(R)的,必须立即放置在第一引号前面。 print r'\n' 打印 \n 并且 print R'\n' 打印 \n


字符串格式化操作

Python最酷的功能是字符串格式运算符%。这种操作是唯一的字符串,弥补了C语言的printf()系列函数功能。下面是一个简单的例子:

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21)

当执行上面的代码中,产生以下结果:

My name is Zara and weight is 21 kg!

下面是完整的,它可以与%符号使用列表:

格式符号 转换
%c 字符
%s 通过str() 字符串转换来格式化
%i 有符号十进制整数
%d 有符号十进制整数
%u 无符号十进制整数
%o 八进制整数
%x 十六进制整数(小写字母)
%X 十六进制整数(大写字母)
%e 索引符号(小写'e')
%E 索引符号(大写“E”)
%f 浮点实数
%g %f和%e 的简写
%G %f和%E的简写

其他支持的符号和功能如下表:

符号 功能
* 参数指定宽度和精度
- 左对齐
+ 显示符号
<sp> 一个正数前留一个空格
# 添加前导零('0')或十六进制前导0x“或”0X“,取决于”x“或”X“是否使用八进制。
0 从键盘左边添加零(而不是空格)
% '%%'给留下一个文字'%'
(var) 映射变量(字典参数)
m.n. m是最小的总宽度和n是数字,显示小数点后的位数(如果appl)

Unicode字符串

在Python普通字符串在内部存储为8位ASCII,而Unicode字符串被作为16位Unicode存储。这使得一组字符更加多样化,包括大多数语言在世界上的特殊字符。限制处理Unicode字符串

#!/usr/bin/python

print u'Hello, world!'

当执行上面的代码,产生以下结果:

Hello, world!

正如你所看到的,Unicode字符串使用前缀 u,就像原始字符串使用前缀 r


© 著作权归作者所有

Garrry
粉丝 27
博文 46
码字总数 48703
作品 0
浦东
技术主管
私信 提问
Python函数声明以及与其他编程语言数据类型的比较

1、函数声明 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件;或者像 Pascal 一样的分离的 interface / implementation 段。在需要函数时,像下面这样声明即可:...

光明辉煌
2018/04/21
5
0
Python3基础之学习笔记(三)-模块-pyc-数据类型-列表-元组-字典-集合-字符串

文章目录 1 模块 2 pyc 3 数据类型 4 三元运算符 5 Bytes 6 列表 7 元组 8 字典 9 集合 10 字符串 1 模块 1.1 sys模块 sys.path存储模块搜索路径,当导入模块时,先在当前目录下查找模块,如...

GoldenKitten
01/15
0
0
Python3学习 - 第四节

1. 基础语法 简单介绍几个比较常用的基础语法知识: a. 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 b. 注释 Python中单行注释以 # 开头;多行注释可...

给你一颗小瓜子
04/15
0
0
学习Python语言 基础语法:变量的基本使用

Python变量 程序是用来处理数据的,变量就是用来保存数据的,通过给数据定义一个名称来保证方便记忆和识别、使用这个数据。变量可以保存所有类型的数据。 Python变量的定义 在Python中,变量...

糖宝lsh
2018/12/18
12
0
Python学习——struct模块的pack、unpack示例

import struct pack、unpack、pack_into、unpack_from 运行结果: [work@db-testing-com06-vm3.db01.baidu.com python]$ python struct_pack.py ===== pack - unpack ===== str: ? len(str......

长平狐
2013/01/06
580
0

没有更多内容

加载失败,请刷新页面

加载更多

db.properties

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=falsejdbc.username=rootjdbc.pas......

行者终成事
15分钟前
3
0
从 Storm 到 Flink,汽车之家基于 Flink 的实时 SQL 平台设计思路与实践

在 2019 年之前,之家的大部分实时业务都是运行在 Storm 之上的。Storm 作为早期主流的实时计算引擎,凭借简单的 Spout 和 Bolt 编程模型以及集群本身的稳定性,俘获了大批用户。下图是实时计...

阿里云官方博客
15分钟前
4
0
网络安全-Day04

2.1.1 什么是SQL注入 2.1.2 注入分类 2.1.3 MySQL手工注入 2.1.4 sqlmap使用 2.1.5 总结 什么是SQL注入 SQL注入漏洞原理 什么是SQL 结构化查询语言(Structured Query Language),是一种特殊目...

Jerry1101
16分钟前
3
0
docker容器内安装yum,vim等命令,以及配置ls指令

使用国内镜像 mv /etc/apt/sources.list /etc/apt/sources.list.bakecho "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.listecho "deb http://......

长恭
16分钟前
3
0
超详细的MySQL8.0.17版本安装教程

下载MySQL MySQL的官网地址:https://www.mysql.com/。 如下图所示: 然后点击DOWNLOADS ==> Community,选择MySQL Community Server。如图所示: 滑到页面的最下面,找到Recommended Downl...

彩色泡泡糖
19分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部