1 Python 字符串的 CRUD 操作
1.1 创建字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串,或使用三引号来创建字符串文本段落(允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符)。
创建字符串很简单,只要为变量分配一个值即可。例如:
str1 = 'Hello World!'
str2 = "藕丝空间"
str3 = '''
藕丝空间,编程我们是认真的!
你会编程吗?
白日依山尽,
黄河入河流,
欲穷千里目,
更上一层楼。
'''
print(str1, str2)
print(str3)
Hello World! 藕丝空间
藕丝空间,编程我们是认真的!
你会编程吗?
白日依山尽,
黄河入河流,
欲穷千里目,
更上一层楼。
1.2 访问字符串中的值
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python 访问子字符串,可以使用方括号来截取字符串,如下实例:
str1 = 'Hello World!'
str2 = "藕丝空间"
print(str1, str2)
print('str1[0]: ', str1[0])
print('str1[:-1]: ', str1[:-1])
print('str1[-6:-1]: ', str1[-6:-1])
print('str1[1:6:2]: ', str1[1:6:2])
print('str1[-1:-6:-2]: ', str1[-1:-6:-2])
print('str2[1:3]', str2[1:3])
Hello World! 藕丝空间
str1[0]: H
str1[:-1]: Hello World
str1[-6:-1]: World
str1[1:6:2]: el
str1[-1:-6:-2]: !lo
str2[1:3] 丝空
1.3 字符串更新
可以通过切片截取字符串的一部分并与其他字段拼接,如下实例:
str1 = 'Hello World!'
str2 = "藕丝空间"
print ("已更新字符串 : ", str1[:6] + str2)
已更新字符串 : Hello 藕丝空间
1.4 删除字符串
str1 = 'Hello World!'
str2 = "藕丝空间"
del str1, str2
# print(str1)
print(str2)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in ()
4 del str1, str2
5 # print(str1)
----> 6 print(str2)
NameError: name 'str2' is not defined
2 字符串运算符
2.1 +
字符串连接
str1 = 'Hello '
str2 = "藕丝空间"
print(str1+str2)
Hello 藕丝空间
2.2 *
重复输出字符串
str2 = "藕丝空间"
print(str2*2)
print(str2*3)
藕丝空间藕丝空间
藕丝空间藕丝空间藕丝空间
2.3 [ ]
通过索引获取字符串中字符
以字符串 abcdef 为例。分别列出了使用正索引和负索引来定位字符的情况。
[图片上传失败...(image-ab7b9f-1523605502650)]
str1 = 'Hello World!'
str2 = "藕丝空间"
print('str1[0]: ', str1[0])
print('str1[:-1]: ', str1[:-1])
print('str1[-6:-1]: ', str1[-6:-1])
print('str1[1:6:2]: ', str1[1:6:2])
print('str1[-1:-6:-2]: ', str1[-1:-6:-2])
print('str2[1:3]', str2[1:3])
str1[0]: H
str1[:-1]: Hello World
str1[-6:-1]: World
str1[1:6:2]: el
str1[-1:-6:-2]: !lo
str2[1:3] 丝空
2.4 in、not in
in 成员运算符 - 如果字符串中包含给定的字符返回 True。
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True。
str1 = 'Hello World!'
str2 = "藕丝空间"
print('Hello' in str1)
print('Hello' in str2)
print('Hello' not in str1)
print('Hello' not in str2)
True
False
False
True
2.5 r/R
原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
print('\n')
print(r'\n')
print('\t')
print(R'\t')
\n
\t
Python转义字符
在需要在字符中使用特殊字符时,python用反斜杠()转义字符。如下表:
转义字符
描述
(在行尾时)
续行符
\
反斜杠符号
'
单引号
"
双引号
\a
响铃
\b
退格(Backspace)
\e
转义
\000
空
\n
换行
\v
纵向制表符
\t
横向制表符
\r
回车
\f
换页
\oyy
八进制数,yy代表的字符,例如:\o12代表换行
\xyy
十六进制数,yy代表的字符,例如:\x0a代表换行
\other
其它的字符以普通格式输出
3 格式化字符串
3.1 使用字符串格式符 %s
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
3.1.1 使用 %s 或 %r 格式化字符串
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
print("I'm %s. I'm %d year old" % ('Tom', 30))
print("I'm %r. I'm %d year old" % (ord('H'), 30))
print("I'm %s. I'm %d year old" % (chr(ord('H')), 30))
print("repr() 显示引号: %r; str() 不显示: %s" % ('test1', 'test2'))
I'm Tom. I'm 30 year old
I'm 72. I'm 30 year old
I'm H. I'm 30 year old
repr() 显示引号: 'test1'; str() 不显示: test2
3.1.2 使用 %c 格式化单个字符及其ASCII码
print("I'm %c. I'm %d year old" % (ord('H'), 30))
print("I'm %c. I'm %d year old" % (ord('t'), 30))
print("ord('t') 的值是 ", ord('t'))
I'm H. I'm 30 year old
I'm t. I'm 30 year old
ord('t') 的值是 116
3.1.3 其它格式
%b 二进制整数,这种格式不支持使用 % 来格式化字符串
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)
print("I'm %s. I'm %d year old" % ('十进制', 30))
print("I'm %s. I'm %i year old" % ('十进制', 30))
print("I'm %s. I'm %o year old" % ('八进制', 30))
print("I'm %s. I'm %x year old" % ('十六进制', 30))
print("I'm %s. I'm %e year old" % ('指数', 30))
print("I'm %s. I'm %E year old" % ('指数', 30))
print("I'm %s. I'm %f year old" % ('浮点数', 30))
print("I'm %s. I'm %f year old" % ('浮点数', 30))
print("I'm %s. I'm %F year old" % ('浮点数', 30))
print("I'm %s. I'm %g year old" % ('Tom', 30.00000))
print("I'm %s. I'm %G year old" % ('Tom', 30.00000))
print("I'm %s. I'm %g year old" % ('Tom', 3.000000E+01))
print("I'm %s. I'm %G year old" % ('Tom', 3.000000e+01))
I'm 十进制. I'm 30 year old
I'm 十进制. I'm 30 year old
I'm 八进制. I'm 36 year old
I'm 十六进制. I'm 1e year old
I'm 指数. I'm 3.000000e+01 year old
I'm 指数. I'm 3.000000E+01 year old
I'm 浮点数. I'm 30.000000 year old
I'm 浮点数. I'm 30.000000 year old
I'm