字符串(string,简写为str)是 Python 中最常用的数据类型之一。我们可以使用引号( ' 或 " )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!'
var2 = "W3Cschool"
Python 访问字符串中的值
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python 访问子字符串,可以使用方括号 []来截取字符串(这种方式也被称为切片),字符串的截取的语法格式如下:
变量[头下标:尾下标]
python截取的特点是取头下标的值到尾下标的值(尾下标的值不取)
索引值以 0 为开始值,-1 为从末尾的开始位置。
从后面索引 -9 -8 -7 -6 -5 -4 -3 -2 -1
从前面索引 0 1 2 3 4 5 6 7 8
W 3 C s c h o o l
从前面截取 : 1 2 3 4 5 6 7 8 :
从后面截取 :
-8 -7 -6 -5 -4 -3 -2 -1 :
以下代码都是取字符C:
str="W3cschool"
print(str[2:3]) #使用截取方式,用正序进行截取
print(str[2:-6])#使用截取方式,正序和倒序混合使用
print(str[-7:-6])#使用截取方式,使用倒序进行截取
print(str[-7])#使用负索引获取单个字符C
print(str[2])#使用正索引获取单个字符C
切片的更多案例:
str="W3cschool"
#取W3C
print(str[:3])
print(str[:-6])
#取sch
print(str[3:6])
print(str[-6:-3])
#只有头下标/尾下标的情况
print(str[:3])
#只有尾下标的情况,默认头下标为0(正序的0,也就是字符串开始的地方)
#也就是从字符串开头截取到3的位置(也就是W3C)
print(str[3:])
#只有头下标的情况,默认尾下标为0(逆序的0,也就是字符串结束的地方)
#也就是从3的位置截取到字符串结尾(也就是school)
#更多应用
str2 ="https://www.w3cschool.cn/"
#截取协议名称
print(str2[:5]) #也就是截取前五位
#截取域名
print(str2[8:-1]) #也就是截取第八位到倒数第一位
尝试一下
Python转义字符
有一些字符因为在python中已经被定义为一些操作(比如单引号和双引号被用来引用字符串),而这些符号我们可能在字符串中需要使用到。为了能够使用这些特殊字符,可以用反斜杠 \ 转义字符(同样地,反斜杠也可以用来转义反斜杠)。如下表:
转义字符 描述 实例
\(在行尾时) 续行符
>>> print("line1 \
... line2 \
... line3")
line1 line2 line3
>>>
\\ 反斜杠符号
>>> print("\\")
\
\' 单引号
>>> print('\'')
'
\" 双引号
>>> print("\"")
"
\a 响铃
>>> print("\a")
执行后电脑有响声。
\b 退格(Backspace)
>>> print("Hello \b World!")
Hello World!
\000 空
>>> print("\000")
>>>
\n 换行
>>> print("\n")
>>>
\v 纵向制表符
>>> print("Hello \v World!")
Hello
World!
>>>
\t 横向制表符
>>> print("Hello \t World!")
Hello World!
>>>
\r 回车,将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
>>> print("Hello\rWorld!")
World!
>>> print('google w3cschool taobao\r123456')
123456 w3cschool taobao
\f 换页
>>> print("Hello \f World!")
Hello
World!
>>>
\yyy 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
>>> print("\110\145\154\154\157\40\127\157\162\154\144\41")
Hello World!
\xyy 十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行
>>> print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")
Hello World!
\other 其它的字符以普通格式输出
Python字符串运算符
下表实例变量 a 值为字符串 "Hello",b 变量值为 "W3Cschool":
操作符 描述 实例
+ 字符串连接 a + b 输出结果: HelloW3Cschool
>>> a ="hello"
>>> b = "W3Cschool"
>>> a+b
'helloW3Cschool'
* 重复输出字符串 a*2 输出结果:HelloHello
>>> a ="hello"
>>> b = "W3Cschool"
>>> a*2
'hellohello'
[] 通过索引获取字符串中字符 a[1] 输出结果 e
>>> a ="hello"
>>> b = "W3Cschool"
>>> a[1]
'e'
[ : ] 截取字符串中的一部分(切片),遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的(详见上上节内容)。 a[1:4] 输出结果 ell
>>> a ="hello"
>>> b = "W3Cschool"
>>> a[1:4]
'ell'
in 成员运算符 - 如果字符串中包含给定的字符返回 True 'H' in a 输出结果 True
>>> a ="hello"
>>> b = "W3Cschool"
>>> 'h' in a
True
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True 'M' not in a 输出结果 True
>>> a ="hello"
>>> b = "W3Cschool"
>>> 'M' not in a
True
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(不区分大小写)以外,与普通字符串有着几乎完全相同的语法。
>>> str="W3Cschool\n"
>>> str2=r"W3Cschool\n"
>>> print(str)
W3Cschool
>>> print(str2)
W3Cschool\n
% 格式字符串 请看下一节内容。
Python 字符串格式化
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串的格式化使用与 C/C++中的printf函数有着一样的语法。
例如
#!/usr/bin/python3
name = "小明"
age = 10
print ("我叫 %s 今年 %d 岁!" % (name, age))
以上实例输出结果:
我叫 小明 今年 10 岁!
python字符串格式化符号:
符 号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整型
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址
格式化操作符辅助指令:
符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。 |