字符串是Python中最受欢迎、最常使用的数据类型。可以通过用引号括起字符来创建它们。 Python将单引号与双引号相同。创建字符串和向一个变量赋值一样简单。 例如 -
var1 = 'Hello World!'var2= "Python Programming"
1.访问字符串中的值
Python不支持字符类型; 字符会被视为长度为1的字符串,因此也被认为是一个子字符串。要访问子串,请使用方括号的切片加上索引或直接使用索引来获取子字符串。 例如 -
#!/usr/bin/python3
var1= 'Hello World!'var2= "Python Programming"print ("var1[0]:", var1[0])print ("var2[1:5]:", var2[1:5]) #切片加索引,www.zyiz.net
当执行上述代码时,会产生以下结果 -
var1[0]: H
var2[1:5]: ytho
2.更新字符串
可以通过将变量分配给另一个字符串来“更新”现有的字符串。 新值可以与其原值相关或完全不同的字符串。 例如 -
#!/usr/bin/python3
var1= 'Hello World!'print ("Updated String :-", var1[:6] + 'Python')
当执行上述代码时,会产生以下结果 -
Updated String :- Hello Python
3.转义字符
下表是可以用反斜杠表示法表示转义或不可打印字符的列表。单引号以及双引号字符串的转义字符被解析。
反斜线符号十六进制字符描述/说明
\a
0x07
铃声或警报
\b
0x08
退格
\cx
Control-x
\C-x
Control-x
\e
0x1b
Escape
\f
0x0c
换页
\M-\C-x
Meta-Control-x
\n
0x0a
新一行
\nnn
八进制符号,其中n在0.7范围内
\r
0x0d
回车返回
\s
0x20
空格
\t
0x09
制表符
\v
0x0b
垂直制表符
\x
字符x
\xnn
十六进制符号,其中n在0~9,a~f或A~F范围内
4.字符串特殊运算符
假设字符串变量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
'Y' not in a 结果为 1
r/R
原始字符串 - 抑制转义字符的实际含义。原始字符串的语法与正常字符串的格式完全相同,除了原始字符串运算符在引号之前加上字母“r”。 “r”可以是小写(r)或大写(R),并且必须紧靠在第一个引号之前。
print(r'\n') 将打印 \n ,或者 print(R'\n') 将打印 \n,要注意的是如果不加r或R作为前缀,打印的结果就是一个换行。
%
格式 - 执行字符串格式化
请参见本文第5节
5.字符串格式化运算符
Python最酷的功能之一是字符串格式运算符%。 这个操作符对于字符串是独一无二的,弥补了C语言中 printf()系列函数。 以下是一个简单的例子 -
#!/usr/bin/python3
print ("My name is %s and weight is %d kg!" % ('Maxsu', 71))
当执行上述代码时,会产生以下结果 -
My name is Maxsu and weight is 71 kg!
以下是可以与%符号一起使用的完整符号集列表 -
编号格式化符号转换
1
%c
字符
2
%s
在格式化之前通过str()函数转换字符串
3
%i
带符号的十进制整数
4
%d
带符号的十进制整数
5
%u
无符号十进制整数
6
%o
八进制整数
7
%x
十六进制整数(小写字母)
8
%X
十六进制整数(大写字母)
9
%e
指数符号(小写字母’e‘)
10
%E
指数符号(大写字母’E‘
11
%f
浮点实数
12
%g
%f和%e
13
%G
%f和%E
其他支持的符号和功能如下表所列 -
编号符号功能
1
*
参数指定宽度或精度
2
-
左对齐
3
+
显示标志或符号
4
在正数之前留空格
5
#
根据是否使用“x”或“X”,添加八进制前导零(‘0‘)或十六进制前导’0x‘或’0X‘。
6
0
使用零作为左边垫符(而不是空格)
7
%
‘%%‘留下一个文字“%”
8
(var)
映射变量(字典参数)
9
m.n.
m是最小总宽度,n是小数点后显示的位数(如果应用)
6.三重引号
Python中的三重引号允许字符串跨越多行,包括逐字记录的新一行,TAB和任何其他特殊字符。
三重引号的语法由三个连续的单引号或双引号组成。
#!/usr/bin/python3
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)
当执行上述代码时,会产生以下结果。注意每个单独的特殊字符如何被转换成其打印形式,它是直到最后一个NEWLINEs在“up”之间的字符串的末尾,并关闭三重引号。 另请注意,NEWLINEs可能会在一行或其转义码(\n)的末尾显式显示回车符 -
this is a long string that ismade up of
several linesand non-printable characters such as
TAB ( )andthey will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
],orjust a NEWLINE within
the variable assignment will also show up.
原始字符串根本不将反斜杠视为特殊字符。放入原始字符串的每个字符都保持所写的方式 -
#!/usr/bin/python3
print ('C:\\nowhere')
当执行上述代码时,会产生以下结果 -
C:\nowhere
现在演示如何使用原始的字符串。将表达式修改为如下 -
#!/usr/bin/python3
print (r'C:\\nowhere')
当执行上述代码时,会产生以下结果 -
C:\\nowhere
7.Unicode字符串
在Python 3中,所有的字符串都用Unicode表示。在Python 2内部存储为8位ASCII,因此需要附加’u‘使其成为Unicode,而现在不再需要了。