​​​​Python基础学习--(6)

一、引言

        Python作为一门流行的编程语言,其前景一直是编程界的热门话题。Python简洁的语法、强大的标准库和丰富的第三方库使其在众多领域都有广泛的应用,从网站开发、数据分析、人工智能到科学计算等。随着数据科学和人工智能的兴起,Python的需求持续增长,成为了许多初学者和转行人士的首选语言。 

        根据业界调查,Python的流行度持续位于顶尖位置。技术发展的趋势表明,Python在未来仍然是一个值得投资学习的语言,不仅因为其在当前的技术市场中的需求,还因为它在教育、科研和自动化等领域的扩展性。

二、第六章

 1.字符串常用操作

# Author : zzd
# Date : 2016/3/4 13:45

# 查询操作
"""
index() 查找字符第一次出现的位置,不存在抛出异常ValueError
rindex() 查找字符最后一次出现的位置,不存在抛出异常ValueError
find() 查找字符第一次出现的位置,不存在返回-1
rfind() 查找字符最后一次出现的位置,不存在返回-1
"""

def find_str():
    s = 'password'
    i = s.index('s')
    print('index查找字符第一次出现的位置,不存在抛出ValueError',i)
    i = s.find('s')
    print('index查找字符第一次出现的位置,不存在返回-1',i)
    i = s.find('z')
    print('index查找字符第一次出现的位置,不存在返回-1', i)
    j = s.rindex('s')
    print('index查找字符最后一次出现的位置,不存在抛出ValueError', j)
    j = s.rfind('s')
    print('index查找字符最后一次出现的位置,不存在返回-1', j)
    j = s.rfind('z')
    print('index查找字符最后一次出现的位置,不存在返回-1', j)

# 2. 字符串带小写转换
"""
upper() 把字符中的所有字符串都转成大写字母
lower() 把字符中的所有字符串都转成小写字母
swapcase() 把字符串中所有大写字母都转成小写字母,把所有小写字母转成大写字母
capitalize() 把第一个字符转成大写,其他转成小写
title() 把每个单词第一个字符转成大写,其余转成小写
"""
def trans_str():
    s = 'hEllo wOrd'
    print('原数据',s)
    print('upper():',s.upper())
    print('lower()',s.lower())
    print('swapcase()',s.swapcase())
    print('captitalize()',s.capitalize())
    print('title()',s.title())

# 3.字符串对齐方式
def align_str():
    s = 'hello word'
    print('居中对齐:',s.center(20,'-'))
    print('左对齐:',s.ljust(20,'_'))
    print('右对齐:',s.rjust(20,'_'))
    print('右对齐,只传一个参数,默认0填充',s.zfill(20))

# 4.字符串拆分
def split_str():
    s1 = 'hello world python'
    s2 = 'hello-world-python'
    print('从左往右分'.center(100,'*'))
    print('split默认按空格拆分',s1.split())
    print('split,设置sep选择分隔符,设置maxsplit设置最大分割次数', s2.split(sep='-',maxsplit=1))
    print('\n')
    print('从右往左分'.center(100, '*'))
    print('rsplit默认按空格拆分',s1.rsplit())
    print('rsplit,设置sep选择分隔符,设置maxsplit设置最大分割次数', s2.rsplit(sep='-', maxsplit=1))
    """从左往右和从右往左分的最主要的区别在与设置maxsplit后,会得到不同的结果"""

# 5. 字符串判断操作
"""
isidentifier()  是不是合法的标识符
isspace() 是否全部由空白字符串组成(回车、换行、水平制表符)
isalpha() 是否全部由字母组成
isdecimal() 是否全部由二进制数字组成
isnumeric() 是否全部由数字组成 
isalnum() 是否全部由字母和数字组成
"""
def judge_str():
    s1 = 'hello_123'
    s2 = s1.join('@')
    s3 = '      \t'
    s4 = 'abcd'
    s5 = '1234'
    s6 = '123四'
    print('合法标识符'.center(70,'*'))
    print(s1,'是不是由合法标识符组成',s1.isidentifier())
    print(s1,'是不是由合法标识符组成',s2.isidentifier())

    print('\n','空白字符串'.center(70, '*'))
    print(s1, '是不是空白字符串组成', s1.isspace())
    print(s3,'是不是空白字符串组成',s3.isspace())

    print('\n', '字母'.center(70, '*'))
    print(s1,'是不是全部由字母组成',s1.isalpha())
    print(s4, '是不是全部由字母组成', s4.isalpha())

    print('\n', '十进制数字'.center(70, '*'))
    print(s5,'是不是由十进制数字组成',s5.isdecimal())
    print(s6, '是不是由十进制数字组成', s6.isdecimal())

    print('\n', '数字'.center(70, '*'))
    print(s5, '是不是由数字组成', s5.isnumeric())
    print(s6, '是不是由数字组成', s6.isnumeric())

    print('\n', '字母和数字'.center(70, '*'))
    print(s1, '是不是全由字母和数字组成', s1.isalnum())
    print(s4,'是不是全由字母和数字组成',s4.isalnum())

# 6.字符串替换和 合并
def replace_join_str():
    s1 = 'hello java java'
    lst = ['hello','java','python']
    tup = ('hello','java','python')
    print('replace替换',s1.replace('java','python'))
    print('replace只替换1个目标',s1.replace('java','python',1))
    print('join合并','*'.join(s1))
    print('列表合并','*'.join(lst))
    print('元组合并','*'.join(tup))
if __name__ == '__main__':
    replace_join_str()

2.字符串比较操作

# Author : zzd
# Date : 2016/3/4 15:31

# 字符比较操作
"""
字符串的比较操作:
    运算符:> >= < <= == !=
比较规则:
    首先是比较两个字符串中第一个字符,如果相等则继续比较下一个字符,
    依次比较下去,直到两个字符串中的字符不相等时,其比较结果就说两个字符串的比较结果
    两个字符串中的所有后续字符将不再被比较
比较原理:
    两个字符进行比较时,比较是其ordinal value(原始值),调用内置函数ord可以 得到指定字符的Ordinal value。
    与内置函数ord对应的内置函数是chr,调用内置函数chr时指定ordinal value可以得到其对应的字符
"""
def compare_str():
    print('python' > 'java')
    print('p',ord('p'))
    print('j',ord('j'))

    print('112',chr(112))
    print('106',chr(106))

    ## == 比较的值
    ## is 比较的id
if __name__ == '__main__':
    compare_str()

3.字符串切片操作

# Author : zzd
# Date : 2022/3/4 16:05

# 字符串切片操作
"""
字符串是不可变类型
    不具备增、删、改等操作
    切片操作将产生新的对象
"""
s = 'abcdefg'
print('指定切片区间',s[0:2])
print('不指定起始:',s[:2])
print('不指定结束:',s[2:])
print('指定区间、指定步长',s[0:3:2])

4.字符串编码解码

# Author : zzd
# Date : 2022/3/4 16:49

# 字符串的编码解码
"""
为什么需要字符串的编码转换:
    计算机之间的传输是通过byte字节,在计算机展示的时候是字符
编码和解码的方式:
    编码:将字符串转换为二进制数据bytes
    解码:将bytes类型的数据转换成字符串类型
"""

s = '大河向东流'

# 编码
print(s.encode(encoding='GBK')) # 一个中文字符,两个字节
print(s.encode(encoding='UTF-8')) # 一个中文字符,三个字节

# 解码
byte = b'\xb4\xf3\xba\xd3\xcf\xf2\xb6\xab\xc1\xf7'

print(byte.decode(encoding='GBK'))

byte = b'\xe5\xa4\xa7\xe6\xb2\xb3\xe5\x90\x91\xe4\xb8\x9c\xe6\xb5\x81'
print(byte.decode(encoding='UTF-8'))

5.字符串驻留机制

# Author : zzd
# Date : 2016/3/4 10:41

# 字符串的驻留机制
"""
字符串:
    在Python中字符串是基本数据类型,是一个不可变的字符序列
什么叫字符串驻留机制?
    仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,
    Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同的字符串时,
    不会开辟新的空间,而是把该字符串 的地址赋给新创建的变量
"""
a = 'python'
b = "python"
c = """python"""
print('----------相同字符串,相同地址------------')
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(a is b , b is c , c is a)

"""
驻留机制的几种情况:
    字符串长度为0或1时
    符合标识符的字符串
    字符串只在编译时进行驻留,而非运行时
    [-5,256]之间的整数数字
sys中intern方法强制2个字符串指向同一对象
pycharm对字符串进行了优化处理
"""

"""
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> s1 = 'abc'
>>> s2 = 'abc'
>>> s1 is s2
True
>>> s1 = 'abc%'
>>> s2 = 'abc%'
>>> s1 is s2
False
>>> s1 == s2
True
>>> 
"""


# 字符串驻留的优缺点
"""
字符串驻留的优缺点:
    当需要值相同的字符串时,可以直接从字符串池中拿来使用,
    避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是比较影响性能的
    
    在需要进行字符串拼接的时候建议使用str类型的join方法,而非+,
    因为join()方法是先计算出所有字符中的长度,然后拷贝,只new一次对象,效率比+更高
"""
# >>> c = ''.join(['ab','c'])
# >>> c
# 'abc'
# >>> c = 'a'.join(['b','c'])
# >>> c
# 'bac'
# >>>

6.格式化字符串

# Author : zzd
# Date : 2022/3/4 16:21

# 格式化字符串
"""
格式化字符串的两种方式
    %作为占位符: '我的名字叫:%s,今年%d岁了' % (name,age)
        字符串:%s
        整数:%l 或 %d
        浮点数:%f
    {}作为占位符: '我的名字叫:{0},今年{1}岁了,我真的叫{0} format(name,age)
"""

name = 'zxy'
age = 18

print('我叫%s,我今年%d岁了' % (name,age))


print('我叫{0},我今年{1}岁了,我真的叫{0}'.format(name,age))


# 长度为10,保留小数点后三位
print('%10.3f' % 3.1415926)

print('{}'.format(3.1415926)) # 只有一个元素,不指定位置也可
print('{0:.3}'.format(3.1415926)) # 总共保留三位数
print('{0:.3f}'.format(3.1415926)) # 保留三位小数
print('{0:10.3f}'.format(3.1415926)) # 设置宽度和精度,一共十位,保留小数点后三位

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值