Python详解字符串

 Python 中最常用的数据类型,我们可以使用引号 ( ' 或 " ) 来创建字符串

一、是什么

        1.不可变的字符序列

        2.主流机制:Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。

主流机制的几种情况:(用交互模式进行检测)

  1. 字符串长度为0或1         
  2. 字符串符合可标识符(数字、字母、下划线) 
  3. 字符串只能在编译时进行驻留,而非运行时         

    【注】因为c只有在运行时才会将字符串连接。

      4.【-5,256】之间的整数数字

       

 

      5.强制驻留sys中intern方法

     

 【注】Pycharm对字符串进行优化,所以用交互模式进行检验.

二、查询

        1.index()字符串第一次出现的位置

s = 'hello,Python'
print(s.index('o')

       2.rindex()字符串最后一次出现的位置

s = 'hello,Python'
print(s.rindex('o')

10 

【注】如果查找不存在时会抛出ValueError异常

        3.find()字符串第一次出现的位置

s = 'hello,Python'
print(s.index('o')

 4

         4.  rfind()字符串最后一次出现的位置

s = 'hello,Python'
print(s.index('o')

    10 

【注】 如果查找不存在时会返回-1

三、大、小字母的转换

        1.upper()所有的字符转为大写

s = 'hello,PYTHON'
print(s.upper())

HELLO,PYTHON

        2.lower()所有字符串转为小写

sz = 'Python,Word'
print(sz.lower())

 python,word

         3.swapcase()所有字符串大写转小写,小写转大写

sz = 'Pyton,Word'
print(sz.swapcase())

    pYTHON,wORD

         4.capitalize()第一个字符转大写,其余转小写

sz = 'python,HELLO'
print(sz.capitalize())

Python,hello

        5.title()每个单词首字母大写,其余转小写 

sz = 'python,HELLO'
print(sz.title())#会一一排查下去

Python,Hello

【注】转换大小写字母的会开辟新的空间

四、对齐方式

        1.center()居中;参数(指定宽度(如果小于原字符串长度会返回原字符串),奇数时向下取偶),指定填充符(默认空格) )

s = 'python,word'
print(s.center(20,'*'))

    ****python,word*****   

        2.ljust()左对齐

sz = 'python,hello'
print(sz.ljust(20,'-'))

python,hello---------

        3.rjust()右对齐 

sz = 'python,hello'
print(sz.rjust(20,'-'))

---------python,hello

        4.zfill()右对齐;参数:只接受一个参数:字符串宽度(左边补0)

sz = 'python,hello'
print(sz.zfill(20))
print('-8841'.zfill(8))

000000000python,hello

-0008841

四、劈分

        1. split()从左边开始劈分,默认空格为劈分点,返回结果为列表;通过sep参数改变劈分符;maxsplit参数设定最大劈分次数,剩余的为一个整体(劈分次数结束)。

s2 = 'hello|word|python'
print(s2.split('|'))
print(s2.split(sep = '|',maxsplit=1))

['hello', 'word', 'python'] 

['hello', 'word|python']

         2.rsplit()从左边开劈分

s2 = 'hello|word|python'
print(s2.rsplit(sep = '|',maxsplit=1))

 ['hello|word', 'python']

五、判断

isidentifier()字符串是否合法(数字、字母、下划线组成)
isspace()字符串是否全部由空白字符组成(回车、换行、水平制表符)
isalpha()字符串是否全部由字母组成
isdecimal()字符串是否全部由十进制数组成
isnumeric()字符串是否全部由数字组成
isalnum()判断字符串是否由数字与字母组成(至少由一个字符)

六、替换与合并

                       1. replace()替换;参数:(指定被替换的字串,替换的字符串,最大替换次数)

s2 = 'hello,hello,hello,hello'
print(s2.replace('he','Wr',2))

Wrllo,Wrllo,hello,hello 

【注】原字符串不会发生改变。

        2.join()合并;将列表或元组的字符串合并为一个字符串。

s3 = ['hello','Java','Python']
print('|'.join(s3))

s4 = ('hello','Java','100')
print(' '.join(s4))

print('&'.join('Python'))

 hello|Java|Python

hello Java 100

P&y&t&h&o&n

七、比较

        1.用比较运算符:==,> ,>=,<=,<,!=;规则:一个一个字符比较下去,不相同时不在进行比较.

print('apple'>'app')
print('applq'>'banana')

True

False 

chr()将字符转换对应的ASCII值
ord()将ASCII值转换对应的字符

八、切片

s= 'hello,Python'
s1 = s[-6::1]
print(s1)

Python 

九、格式化

%s占位符:字符串
%d占位符:整数
%f占位符:浮点数
name = '张三'
age = 26
print('我叫%s,今年%d岁' % (name,age))

我叫张三,今年26岁 

         { }

print('我叫{0},今年{1}岁'.format(name1,age1))

 我叫C罗,今年35岁

print('{0:.5}'.format(3.1415926))
print('{:10.3}'.format(3.1415926))# 共10位,3位小数;0是占位符可以省略.
print('%f' % 3.1415926)#默认保留6位数

 3.1416

      3.14 

3.141593

【注】{ }的数字与format()中的位置时一一对应(从0开始)

        f—string

name = '张三'
age = 26
print(f'我叫{name},年龄{age}')

我叫张三,年龄26 

        宽度与精度

%10d宽度为10(左边填充空格)
%.3f保留3为小数(默认保留6位)
%10.3f总宽度为10位,保留小数3位
print('%10.3f' % 3.1415926)

     3.142

 十、编码与解码

编码类型
GBK在GBK这种编码格式中,一个中文占2个字节
UTF—8

在UTF-8编码格式中,一个中文占3个字节

       【注】编码与解码的类型要一一对应

        1.编码 encode()函数

s = '天涯何处无芳草'#七个字
print(s.encode(encoding="GBK"))
print(s.encode(encoding="UTF-8"))

b'\xcc\xec\xd1\xc4\xba\xce\xb4\xa6\xce\xde\xb7\xbc\xb2\xdd'     14
b'\xe5\xa4\xa9\xe6\xb6\xaf\xe4\xbd\x95\xe5\xa4\x84\xe6\x97\xa0\xe8\x8a\xb3\xe8\x8d\x89' 21   

         2.解码   decode()函数

byte = s.encode(encoding="UTF-8")#编码
print(byte.decode(encoding="UTF-8"))#解码

天涯何处无芳草 

        我也一位开始学习Python的小白,感兴趣可以关注私信我,一起讨论学习。^o^

                                                                                                        奋进! ^o^

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值