0_Hello_World

首先,我们来看到标题——String。什么是String?按照字面意思翻译过来,String就是字符串。那么问题又来了,什么是字符串?下面举两个例子:

str1 = 'Hello World!'
str2 = "MrDeng"

1_访问字符串中的值

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用,比如'a',我们也将他视为一个字符串。Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如:变量[头下标:尾下标]。索引值以 0 为开始值,-1 为从末尾的开始位置。
pic_1

pic_2

var1 = 'Hello World!'
var2 = "Mrdeng"
 
print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])
>>>var1[0]: H
>>>var2[1:5]: rden

2_字符串更新

我们可以截取字符串的一部分并与其他字段拼接,如下实例:

var1 = 'Hello World!'
print ("已更新字符串 : ", var1[:6] + 'MrDeng!')
>>>已更新字符串 :  Hello MrDeng!

3_转义字符

这是一个非常重要的知识点!请务必重视!在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。如下表:

转义字符描述
\(在行尾时)续行符
\\反斜杠符号
\'单引号
\"双引号
\a响铃
\b退格(Backspace)
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车,将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
\f换页
\yyy八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
\xyy十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行
\other其它的字符以普通格式输出
下面是使用示例:
#续行符
print("line1,\
... line2,\
... line3")
>>>line1,line2,line3

#反斜杠符号
print("\\")
>>>\

#单引号
print('\'')
>>>'

#双引号
print("\"")
>>>"

#响铃
print("\a")
>>>(只有在CMD环境才会响)

#退格(Backspace)
print("Hello,\b,World!")
>>>Hello,World!

#空
print("Mr\000Deng")
>>>Mr Deng

#换行符
print("Hello\nWorld!")
>>>Hello
>>>World!

#横向制表符(相当于tab键)
print("Hello\tWorld!")
>>>Hello    World!

#回车符
见动图
import time
for i in range(10):
    print("\r%d" % i, end='')
    time.sleep(0.3)

gif_1.gif

4_字符串运算符

下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":

操作符描述实例
+字符串连接a + b 输出结果: HelloPython
*重复输出字符串a*2 输出结果:HelloHello
[]通过索引获取字符串中字符a[1] 输出结果 e
[ : ]截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。a[1:4] 输出结果 ell
in成员运算符 - 如果字符串中包含给定的字符返回 True'H' in a 输出结果 True
not in成员运算符 - 如果字符串中不包含给定的字符返回 True'M' not in a 输出结果 True
r/R原始字符串 (所见即所得)见下方例子
%格式字符串请看下一节内容。
以下实例展示了字符运算符的使用方法:
a = "Hello"
b = "Python"
 
print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])
 
if( "H" in a) :
    print("H 在变量 a 中")
else :
    print("H 不在变量 a 中")
 
if( "M" not in a) :
    print("M 不在变量 a 中")
else :
    print("M 在变量 a 中")
 
print (r'\n')
print (R'\n')

以上实例输出结果为:

a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n

5_字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法,例如:

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
>>>我叫 小明 今年 10 岁!

python字符串格式化符号:

符 号描述
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号功能
*定义宽度或者小数点精度
-用做左对齐
+在正数前面显示加号( + )
在正数前面显示空格
#在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0显示的数字前面填充'0'而不是默认的空格
%'%%'输出一个单一的'%'
(var)映射变量(字典参数)
m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
下面是部分字符串格式化符号:
str_1 = "MrDeng"
int_1 = 123
float_1 = 12.34567
big_1 = 123456789

print("Hello %s"% str_1)
print("The number is %d"% int_1)
print("The number round to 1/% is %.2f"% float_1)
print("The big number is %e"% big_1)
>>>Hello MrDeng
>>>The number is 123
>>>The number round to 0.01 is 12.35
>>>The big number is 1.234568e+08

6_三引号

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下:

para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)

以上实例执行结果为:

这是一个多行字符串的实例
多行字符串可以使用制表符
TAB (    )。
也可以使用换行符 [ 
 ]。

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

7_f-string

f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。之前我们习惯用百分号 (%):

name = 'Runoob'
'Hello %s' % name
>>> 'Hello Runoob'

f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:

name = 'Python'
f'Hello {name}'  # 替换变量
>>> 'Hello Python'
f'{1+2}'         # 使用表达式
>>> '3'

w = {'name': 'MrDeng', 'url': 'pic.mrdeng.cn'}
f'{w["name"]}: {w["url"]}'
>>> 'MrDeng: pic.mrdeng.cn'

用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:

x = 1
print(f'{x+1}')   # Python 3.6
>>> 2

x = 1
print(f'{x+1=}')   # Python 3.8
>>> 'x+1=2'

8_format格式化函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。
以下是使用实例:

"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
>>>'hello world'
 
"{0} {1}".format("hello", "world")  # 设置指定位置
>>> 'hello world'
 
"{1} {0} {1}".format("hello", "world")  # 设置指定位置
>>> 'world hello world'

print("网站名:{name}, 地址 {url}".format(name="MrDeng", url="pic.mrdeng.cn"))
>>>网站名:MrDeng, 地址 pic.mrdeng.cn

fomart数字格式化

数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:+.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零 (填充左边, 宽度为2)
5{:x<4d}5xxx数字补x (填充右边, 宽度为4)
10{:x<4d}10xx数字补x (填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:>10d}13右对齐 (默认, 宽度为10)
13{:<10d}13左对齐 (宽度为10)
13{:^10d}13中间对齐 (宽度为10)
输出对应进制:
'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)

1011
11
13
b
0xb
0XB

注:^, <, > 分别是 居中、左对齐、右对齐 ,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。+ 表示在正数前显示 +,负数前显示 -;(空格)表示在正数前加空格。b、d、o、x 分别是二进制、十进制、八进制、十六进制。

9_字符串常用函数

#len()->计算字符串长度
str_1 = '234567'
print(len(str_1))
>>>6

待补充...

最后修改:2024 年 09 月 23 日
如果觉得我的文章对你有用,请随意赞赏