一、字符串介绍
-
字符串是一种用来表示文本的数据类型,它是由符号或者数值组成的一个连续序列。
-
Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。
-
Python使用反斜杠“\”转义。例如,在字符串中的引号前添加“\”,此时Python解释器会将“\”之后的引号视为解释为一个普通字符,而非特殊符号。
a = 'hello' ##正常的字符串定义方式为加单引号或者双引号 b = 'what\'s up' ##如果在字符串中出现了单引号,可以采取加转义 c = "what's up" ##或者是直接使用双引号来避免单引号 print(a) print(b) print(c)
hello
what's up
what's up
二、格式化 格式化字符串是指将指定的字符串转换为想要的格式。
1). %格式化
%[(name)][flags][width].[precition]typecode
name:(可选)用于选择指定的key
flags:(可选)+左对齐、-右对齐
width:(可选)宽度
preciton:(可选)精度,默认位保留6位
typecode:必选
%s:字符串类型,但可以放入任何类型
%f:浮点数,默认保留6位
%b:将数字转换为2进制放入指定位置
%d:将数字转为整型放入指定位置
%x:将数字转为十六进制放入指定位置
massage='Hello,%s'%'word'
print(massage)
hello,word
2). .format( )方法格式化
字符串.format(字符串、数字等)
.format()格式化括号内的值必须比占位符要多,少于占位符会报错,多余占位符无影响
s = "I am {}, age{}".format("alex", 18)
print(s)
s1 = "I am {}, age{}".format("alex", 18, 19, 20)
print(s1)
I am alex, age18
按照引所替换
s = "I am {0},age{1[2]}".format("Alex", [16, 17, 18])
print(s)
I am Alex,age18
3). f-string ,主要目的是使格式化字符串的操作更加简便。
f-string在形式上是以 f
或 F
修饰符引领的字符串(f'xxx'
或 F'xxx'
),以大括号 {}
标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式:
f-string用大括号 {}
表示被替换字段,其中直接填入替换内容:
name = 'Eric'
q= f'Hello, my name is {name}'
print(q)
Hello, my name is Eric
三、精彩实例
1). 进制转换
def f(n,x): # n为待转换的十进制数,x为机制,取值为2-16
a=[0,1,2,3,4,5,6,7,8,9,'A','b','C','D','E','F']
b=[]
while True:
s=n//x#商
y=n%x#余数
b=b+[y]
if s==0:
break
n=s
b.reverse()
for i in b:
print(a[i],end='')
f(26,8)
32
2).文本进度条
import time #调用time库
print("开始执行".center(25, '-')) #把开始执行放中间,不足25个用-包围
start = time.perf_counter() #记录当前时间
count = 50 #字符串宽度为50
for i in range(count + 1):
a = "#" * i #复制#的次数
b = "." * (count - i) #复制.的次数
c = (i/count) * 100 #输出百分比
res = time.perf_counter() - start#计算时间差
print(f"\033[1;31m\r{c:.2f}%[{a}->{b}]{res:.2f}s\033[0m", end="")
# 输出进度条并改变颜色#,还可以改变进度条背景颜色
time.sleep(0.1) #每个任务完成眠时间0.1秒
print("\n" + "结束执行".center(25, '-')) #换行把结束执行放中间,不足25个用-包围
-----------开始执行----------
100.00%[##################################################->]5.03s
-----------结束执行----------
四、字符串的常见操作
1).查找与替换
字符串查找方法find()
,利用该方法可以在一个较长的字符串中查找子字符串。
如果该字符串中有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引;若没有找到符合条件的子串,则返回-1
find()
方法的基本使用语法如下:
source_string.find(sub_string)
其中,
-
source_string
:源字符串 -
sub_string
:待查的目标子字符串 -
find
:字符串查找方法的语法关键字# coding=utf-8 # 创建一个字符串 source_string = 'The past is gone and static' # 查看"past"在source_string字符串中的位置 print(source_string.find('past')) # 查看"love"在source_string字符串中的位置 print(source_string.find('love'))
4
-1
字符串替换replace()
方法,用以替换给定字符串中的子串,其基本使用语法如下:
source_string.replace(old_string, new_string,[
count])
其中,
-
source_string
:待处理的源字符串 -
old_string
:被替换的旧字符串 -
new_string
:替换的新字符串 -
replace
:字符串替换方法的语法关键词 - count:表示替换旧字符串的次数,默认全部替换。
-
string = 'He said, "you have to go forward, ' \ 'Then turn left, Then go forward, and Then turn right."' # 指定替换两次 new_string = string.replace("Then", "then",2) print(new_string)
He said, "you have to go forward, then turn left, then go forward, and Then turn right."
2).字符串的分割与拼接
split()方法可以按照指定分隔符对字符串进行分割,该方法会返回由分割后的子串组成的列表。
str.split(sep=None, maxsplit=-1)
其中, sep:分隔符,默认为空字符。 maxsplit:分割次数,默认值为-1, 表示不限制分割次数。string= "Hello, my name is Wang Hong"
# 以空格作为分割符,并分割2次
print(string.split(' ', 2))
['Hello,', 'my', 'name is Wang Hong']
join()方法使用指定的字符连接字符串并生成一个新的字符串。
str.join(iterable)
其中, iterable:表示连接字符串的字符symbol = '*'
world = 'Python'
print(symbol.join(world))
P*y*t*h*o*n
3).删除字符串的指定字符
strip()可以去除头尾指定字符
.strip()参数为空时,默认去除ss字符串中头尾\r, \t, \n, 空格等字符;参数为某个字符时,可以去掉头尾指定字符
s = 'abbmmmcccbbb'
s1 = s.strip('abc')
print(s1)
mmm
lstip()可以去除头部指定字符
s = 'abbmmmcccbbb'
s1 = s.lstrip('abc')
print(s1)
mmmcccbbb
rstip()可以去除尾部字符
s = 'abbmmmcccbbb'
s1 = s.rstrip('abc')
print(s1)
abbmmm
4).修改指定字符串的大小
upper() 它用于将字符串中的所有小写字母转换为大写字母。
str = "i like C"
print(str.upper())
lower() 方法用于将字符串中的所有大写字母转换为小写字母I LIKE C
str = "I LIKE C"
print(str.lower())
i like c
title() 方法用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写
str = "I LIKE C"
print(str.title())
capitalize()方法用于将字符串的第一个字母转化为大写字母,其余小写。I Like C
str = "I LIKE C"
print(str.capitalize())
5)字符串对齐 ljust() 方法的功能是向指定字符串的右侧填充指定字符,从而达到左对齐文本的目的。I like c
text="我是字符串";
print(text);
print(text.ljust(20));
print(text.ljust(20,'/'));
我是字符串
我是字符串
我是字符串///
center() 函数,居中对齐字符串
text="我是字符串";
print(text);
print(text.center(20));
print(text.center(20,"*"));
我是字符串
我是字符串
*******我是字符串********
rjust() 函数,右对齐字符串
text="我是字符串";
print(text);
print(text.rjust(20));
print(text.rjust(20,'~'));
我是字符串
我是字符串
~~~~~~~~~~~~~~~我是字符串