python字符串


 python字符串  

序列类型也叫容器类型。字符串(String)也是序列类型,本质上是字符序列。字符串是不可变序列,也就是说不能对字符串进行增,删,改等操作。在内存里,字符串存的是保存的所有字符的Unicode码。字符见得最多的就是英文字符(ASCII码)和汉字。Unicode字符集里就包括了英文字符和汉字,还有其他国家的语言字符。

python没有字符类型(char),只有字符串类型,单个字符也是字符串。

使用ord()内置函数可以获得一个字符的十进制Unicode码。

print(ord(a))
# 97

使用chr()内置函数可以将一个十进制Unicode码字符转换为字符。

print(chr(28100))
# 淄

1,python的四种引号

分别是:单引号,"双引号",单三引号,"""双三引号"""

s1 = 666
s2 = "666"
s3 = 666
s4 = """666"""
s5 = 
666

s6 = """
666
"""

单三引号,"""双三引号"""支持多行。

2,字符串的创建

被引号包起来的零个或多个字符就是字符串对象。

a = abc
b = "efg"
c = hij
d = """klm"""
for it in (a, b, c, d):
    print(it, 类型是, type(it))
# abc 类型是 <class str>
# efg 类型是 <class str>
# hij 类型是 <class str>
# klm 类型是 <class str>

另外单三引号,"""双三引号"""里面的字符可以跨行写。

str = """

1ws
sfg
"""
print(str)
# 
# 
# 1ws
# sfg

当我们想要保存单引号,"双引号"字符时,把他们写在单三引号,"""双三引号"""里面即可。

python支持空字符串,引号里啥也不写就是空字符。

s1 = 
"我爱你",我也是

s2 = 
print(s1)
print(:, s2, 1)  # 空字符串打印出一个空格
# 
# "我爱你",我也是
# 
# :  1

3,len内置函数

len()用于计算序列对象的长度。当对字符串使用时,能够得到字符串里面一共有多少个字符。

str1 = huhfedncjcne
print(len(str1))
# 12

4,python行连接符

行连接符为反斜杠,当一行代码太长必须换行写的时候,可以在一行的最后面加上,解释器就认为要与下一行连起来。

a = abc
b = "efg"
c = hij
d = """klm"""
for it in
        (a, b, c, d):
    print(it, 类型是, type(it))
# abc 类型是 <class str>
# efg 类型是 <class str>
# hij 类型是 <class str>
# klm 类型是 <class str>

5,转义字符

有很多字符不能在屏幕上显示,但是有特殊的功能。在键盘上,26个字母a-z和数字0-10我们都认识,其他的按键都作为功能或者控制来辅助使用。有些字符不仅不容易在键盘上按出来,我们也比较陌生,这个时候可以使用转义字符。

转义字符以反斜杠开头,后接要转义的字符。

代表字符,"代表字符",/代表字符, 代表换行, 代表回车(回车就是回到行首,键盘上的enter键是换行的功能,虽然他叫回车键), 代表tab(打出四个空格),代表backspace(删掉光标处的字符)。

str1 = a,,",/,	,b
123456
6
print(str1)
# a,,",,	,
# 6

6,字符串拼接与复制

用‘+’实现多个字符拼接起来。会生成新的对象,效率低。

用‘*’实现字符串的复制。会生成新的对象,效率低。

str1 = 我
str2 = 爱
str3 = 你
print(str1+str2+str3)
print(str1*3)
# 我爱你
# 我我我

7,print函数

每次调用print()函数后默认会换行。原因是print函数有个end默认参数,默认为end= ,所以会换行。我们可以修改end参数,让他不换行。

str1 = python
print(str1, end=666)
# python666

8,input函数

input函数可以接受用户输入的多个字符,以enter键结束输入,并且返回一个字符串。

name = input("请输入名字:")
print("名字是:", name)

9,字符串对象的replace()方法

replace方法可以将一个字符串中的字符进行替换,这个操作会生成新的对象,并不会改变原来的字符串。

name = 123456
print(name.replace(1234, 4321))
# 432156

10,字符串类型转整型和浮点型

字符串转整型必须要求是纯整数字符串,也就是一个整数套上了引号,才能转,如:123。

字符串转浮点型,要求是一个数字套上引号才行。如:123,6.6。

print(int(666), float(666), float(6.66))
# 666 666.0 6.66
print((int(6.6)))  # 报错,ValueError: invalid literal for int() with base 10: 6.6

11,字符串的切片与元素访问

字符串本质上是字符序列,且是有序序列,支持切片,也就是支持[]语法的操作,一种是用[]和索引来访问元素,另一种是用[]来实现切片。

str1 = 123456我爱你
print(str1[-3], str1[-2], str1[-1])
print(str1[-3:])
# 我 爱 你
# 我爱你

12,字符串对象的split()方法和join()方法

split:分割,将字符串分成多个字符串。需要依据给的条件分割,比如一个字符串中含有很多空格,那么可以以空格来分割这个字符串。分割完成之后将多个子字符串存在列表里返回。

join:合并,将多个字符串(这些子字符串放在可迭代序列里)合并成一个字符串。

str1 = 我 爱 你
str2 = 爱
str3 = 你
re1 = str1.split(sep= )
re2 = .join((str2, str3))
re3 = +.join([str2, str3])  # 字符之间用+号来连接
print(re1)
print(re2)
print(re3)
# [我, 爱, 你]
# 爱你
# 爱+你

字符串拼接推荐使用join方法,因为他不会创建新的字符串对象。

13,字符串的常用方法

操作字符串和我们平常在word上写文章和在学校修改作文差不多,都是对句子(也就是字符串)进行操作,常见的操作有:删掉几个字;删掉开头;删掉句尾;改错字别字;将一句话加个逗号分成两句话;数一数作文字数够没够等等。计算机经常操作的字符串虽然包含生活中的字符串,但更多的是处理与计算机有关的字符串,比如文件名,路径,网站名称,h5文档。

len(str obj):获取字符串长度

str.count():指定字符串出现了几次

str.rstrip():去掉字符串尾巴的指定字符,可以用来获取文件名。

str.upper():将字符串变成全部大写

str.lower():将字符串变成全部小写

14,字符串的格式化和格式化打印

格式化就是将字符串变成我们想要的格式,比如一个小数要保留几位小数。

占位符:就像有人给你占了个座位一样,也许椅子上只是放了一本书,但是可以给你坐,也可以给你的好友坐。python格式化字符串常见的占位符有:{}和%,他们只是在字符串中占据某个位置,这些位置可以被其他对象替代。

1.format方法

format方法是字符串对象的一个方法。可以接收参数然后对字符串中的占位符进行替代,默认使用{}占位符。

str1 = 我是{},我爱{},非常的爱{}
str2 = 我是{0},我爱{1},非常的爱{1}.format(老六, 马内)
str3 = 我是{name},我爱{girl},非常的爱{money}.format(money=money, name=老六, girl=beautiful girl)
print(str1.format(老六, python, 马内))
print(str2)
print(str3)
# 我是老六,我爱python,非常的爱马内
# 我是老六,我爱马内,非常的爱马内
# 我是老六,我爱beautiful girl,非常的爱money

由上面的代码可知:{}里要么啥也不写,要么只能写0-9之间的数字和参数变量名。

{}里面啥也不写,然后有几个{}就给几个参数。如上面代码中的str1。

{}里写了0-9之间的数字,每个数字代表占一个位置,相同的数字会替换成相同的值。format括号里从左往右的第1个参数对应为数字0,第2个参数对应为数字1,第3个参数对应为数字2,以此类推。如上面代码中的str2。

{}里写参数名时,format口号里得用关键字参数进行赋值,这时与顺序无关。如上面代码中的str3。

占位数据的填充与对齐:

在{}里加上:,再在冒号后面补充格式,也就是{:格式}。格式一般为:填充的字符+对齐方式+宽度。如{:#^8}表示用“#”来填充,^表示居中对齐,8表示占8个英文字符的宽度。

str1 = 数字是{:#>8}
print(str1.format(100))
# 数字是#####100

另外,小于号<和大于号>分别表示左对齐和右对齐。

数字的格式化:

数字分为小数和整数,分别用字母f和d来表示。

小数的格式一般为:m.nf。如{:.2f}表示保留两位小数。{:.0f}表示不带小数。{:+.2f}表带正负号输出。{:4d}表示占4个字符宽度的整数。{:,}表示每隔三位数用逗号隔开。{:.2%}表示保留两位小数的百分数。{:.2e}表示保留两位小数的e记法。

str1 = 数字是{:#>8.2f}
print(str1.format(100))
# 数字是#####100.00
str1 = {:@>6d},{:.6%},{:.2e},{:,},{:.0f}
print(str1.format(100, 1, 100, 1000, 100.00))
# @@@100,100.000000%,1.00e+02,1,000,100

实际上,符号.表示的是精度,完整的是m.n,表最小宽度为m,小数位数为n。然后再m.n后面加上d,f,e,%等修饰符,以代表某种格式。

2,%占位符格式化

用%+类型来占一个位置,所占据的位置被替换后会按照类型来输出。

如%d表示整数,%s表示字符串,%f表示浮点数,%c表示单个字符,%e表示科学计数法,%o表示以8进制输出,%x表示以16进制输出。

语法如下:

str1 = 我要打印:%-8d,%s,%.2e,%o,%x,%.2f
print(str1 % (100, 10086, 100, 100, 100, 100))
# 我要打印:100     ,10086,1.00e+02,144,64,100.00

其中第二行的%表示分隔符,是语法规定的。%后面紧跟参数,一个萝卜一个坑,从左往右依次对应。在%占位符情况下,没有^,<,>的对齐符号了,只有‘-’这一个对齐符号,他表示左对齐。

15,可变字符串

如果硬要对字符串进行修改而不生成新的字符串对象,可以将不可变字符串(默认的)转换为可变字符串。可以使用io模块的StringIO方法将不可变字符串转换为可变字符对象。

import io

s = "hello, world"
sio = io.StringIO(s)
print(type(sio), and, id(sio), and, sio.getvalue())
sio.seek(7)
sio.write(earth)
print(type(sio), and, id(sio), and, sio.getvalue())
# <class _io.StringIO> and 1925805928664 and hello, world
# <class _io.StringIO> and 1925805928664 and hello, earth

可以看到修改后字符串和原来字符串的id一模一样。

str1 = {:@>6d},{:.6%},{:.2e},{:,},{:.0f} print(str1.format(100, 1, 100, 1000, 100.00)) # @@@100,100.000000%,1.00e+02,1,000,100 实际上,符号.表示的是精度,完整的是m.n,表最小宽度为m,小数位数为n。然后再m.n后面加上d,f,e,%等修饰符,以代表某种格式。 2,%占位符格式化 用%+类型来占一个位置,所占据的位置被替换后会按照类型来输出。 如%d表示整数,%s表示字符串,%f表示浮点数,%c表示单个字符,%e表示科学计数法,%o表示以8进制输出,%x表示以16进制输出。 语法如下: str1 = 我要打印:%-8d,%s,%.2e,%o,%x,%.2f print(str1 % (100, 10086, 100, 100, 100, 100)) # 我要打印:100 ,10086,1.00e+02,144,64,100.00 其中第二行的%表示分隔符,是语法规定的。%后面紧跟参数,一个萝卜一个坑,从左往右依次对应。在%占位符情况下,没有^,<,>的对齐符号了,只有‘-’这一个对齐符号,他表示左对齐。 15,可变字符串 如果硬要对字符串进行修改而不生成新的字符串对象,可以将不可变字符串(默认的)转换为可变字符串。可以使用io模块的StringIO方法将不可变字符串转换为可变字符对象。 import io s = "hello, world" sio = io.StringIO(s) print(type(sio), and, id(sio), and, sio.getvalue()) sio.seek(7) sio.write(earth) print(type(sio), and, id(sio), and, sio.getvalue()) # and 1925805928664 and hello, world # and 1925805928664 and hello, earth 可以看到修改后字符串和原来字符串的id一模一样。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/290259.html

(0)
上一篇 2022年10月1日
下一篇 2022年10月1日

发表回复

登录后才能评论