python字符串

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

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

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

print(ord('a'))
# 97

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

print(chr(28100))
# 淄

目录

1,python的四种引号

2,字符串的创建

3,len内置函数

4,python行连接符

5,转义字符

6,字符串拼接与复制

7,print函数

8,input函数

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

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

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

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

13,字符串常用方法

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

1.format方法

2,%占位符格式化

15,可变字符串


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我们都认识,其他的按键都作为功能或者控制来辅助使用。有些字符不仅不容易在键盘上按出来,我们也比较陌生,这个时候可以使用转义字符。

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

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

str1 = 'a,\',\",\\,\t,b\b\n123456\r6'
print(str1)
# a,',",\,	,
# 6

6,字符串拼接与复制

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

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

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

7,print函数

每次调用print()函数后默认会换行。原因是print函数有个end默认参数,默认为end='\n',所以会换行。我们可以修改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一模一样。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值