容器型数据类型——字符串

容器型数据类型——字符串

字符串的定义

注意!!!:字符串同元组一样只能进行读操作,不能进行写操作

在Python程序中,如果我们把单个或多个字符用单引号或者双引号包围起来,就可以表示一个字符串。字符串中的字符可以是特殊符号、英文字母、中文字符、日文的平假名或片假名、希腊字母、Emoji字符等。

字符串的运算

再次注意:字符串和元组一样也是不变的数据类型,只能读操作不能写操作

循环遍历字符串每个字符

a = 'hello world'
#获取字符串的长度(空格也算)
print(len(a))
#循环遍历字符串每个字符
for i in range(len(a)):#i表示下标
    print(a)
for i in a:   #i表示元素
    print(i)
    

重复运算

a = 'hello world'
print(a * 5)

成员运算

a = 'hello world'
print('or' in a)
print('ko' in a)

比较运算

(比较字符串的内容)比的是字符编码的大小

a = 'hello world'
b = 'hello,world'
print(a == b)
print(a != b)
c = 'goodbye, world'
print(b>c)

d = 'hello, everybody'
print(b >=c)
print(ord('g'),ord('h'))

字符串的索引和切片

字符串的索引与切片与列表元组一样

a = 'hello, world'
print(a[0],a[-len(a)])
print(a[len(a) - 1],a[-1])
print(a[a], a[-7])
print(a[2:5])
print(a[1:10:2])
print(a[::-1])

字符串相关函数与操作

操作字符串大小写

  • upper() 全变大写

  • lower() 全变小写

  • capitalize() 首字母大写

  • title() 每个单词首字母大写

    a = 'hello, world123'
    
    print(a.upper())       #变全大写
    print(a.lower())       #变全小写
    print(a.capitalize())  #首字母大写
    print(a.title())       #每个单词首字母大写
    print(a)               #可以看出前面操作对字符串没有改变
    

判断字符串性质

判断字符串的性质返回的都是布尔值

在以后的数据分析中我们查看数据的性质会用到此些函数

  • isdigit() 判断字符串是不是数字

  • isalpha() 判断字符串是不是字母

  • isalnum() 判断字符串是不是字母和数字

  • isascii() 判断字符串是不是ASCII码 (python3.0以后才有此函数)

    b = 'abc123'
    print(b.isdigit())#判断字符串是不是数字
    print(b.isalpha())#判断字符串是不是字母
    print(b.isalnum())#判断字符串是不是字母和数字
    print(b.isascii())#判断字符串是不是ASCII码 python 3.7 以上版本
    
  • startswith() 判断字符串是否以指定内容开头

  • endswith() 判断字符串是否以指定内容结尾

    c = '你好呀'
    print(c.startswith('你好'))#判断字符串是否以指定内容开头
    print(c.endswith('啊'))#判断字符串是否以指定内容结尾
    

查找有没有子串

  • index() / rindex() 从左开始查找 / 从右开始查找

  • find() / rfind() 同上

    a = 'hO apple, i love apple.'
    #index --> 从左向右寻找指定的字串,可以指定从哪开始找,默认是0
    #找到了返回字串对应的索引(下标),找不到直接报错(程序崩溃)
    print(a.index('apple'))
    print(a.index('apple',10))
    print(a.rindex('apple'))#从右向左
    #同上  但查找不到不会报错
    print(a.find('apple'))
    print(a.find('apple', 10))
    print(a.rfind('apple'))
    print(a.find('banana'))
    print(a.rfind('banana'))
    

字符串对齐操作

  • center() 居中

  • rjust() 右对齐

  • ljust() 左对齐

    a = 'hello, world'
    print(a.center(80, '~'))  # 居中80个字符  可以指定字符,默认空格。用~填充也可换其它
    print(a.rjust(80, '='))  # 右对齐
    print(a.ljust(80, '-'))  # 左对齐
    
  • zfill() 零填充(在左边补0)

    b = '123'
    print(b.zfill(6))  # 零填充(在左边补六个0)
    

字符串的修剪操作

  • strip() 修剪字符串两端空格

  • lstrip() 修剪字符串左端空格

  • rstrip() 修剪字符串右端空格

  • replace() 将指定的字符串替换为新的内容

    email = ' 308143018@qq.com   '
    content = '  马化腾是个傻逼    '
    #修剪字符串左右两端空格
    print(email.strip())
    print(content.strip())
    #修剪字符串左端的空格
    print(email.lstrip())
    #修剪字符串右端的空格
    print(email.rstrip())
    
    #将指定的字符串替换为新的内容
    print(content.strip().replace('马化腾','*').replace('傻逼','*'))
    

在这里插入图片描述

字符串的拆分与合并

  • split() 用空格拆分字符串得到一个列表

  • rsplit() 从右向左进行字符串拆分

  • print(' '.join(contents))将列表中的字符串,用指定的字符连接起来

    content = 'You go your way, I will go  mine.'
    content2 = content.replace(',','').replace(',','')
    # 用空格拆分字符串得到一个列表
    words = content2.split()
    print(words, len(words))
    for word in words:
        print(word)
    
    # 用空格拆分字符串,最多允许拆分三次
    words = content2.split(' ', maxsplit=3)
    print(words, len(words))
    
    #从右向左进行字符串拆分,做多允许拆分三次
    words = content2.rsplit(' ',maxsplit=3)
    print(words,len(words))
    
    #用逗号拆分字符串
    items = content.split(',')
    for item in items:
        print(item)
    
    contents = [
        '请不要相信我的美丽',
        '更不要相信我的爱情',
        '因为在涂满油彩的面孔下',
        '有着一颗戏子的心'
    ]
    #将列表中的字符串,用指定的字符连接起来 这里用的是空格
    print(' '.join(contents))
    

字符串的编码与解码

字符串的编码与解码非常重要,在我们的以后数据提取与分析中有着重要的作用。

要点;
1.选者字符集(编码)的时候,最佳的选择(也是默认的)是UTF-8。
2.编码和解码的字符集要保持一致,否则就会出现乱码现象。
3.不能用IOS-8856-1编码保存中文,否则会出现编码黑洞,中文变成?。
4.UTF-8是Unicode的一种实现方案,也一种变长的编码。
最少1个字节(英文和数字),最多4个字节(Emoji),表示中文用3个字节。

编码,str(字符串)  --->encode() --->bytes(字节串)
解码:bytes(字节串) --->decode() --->str(字符串)
  • encode() 编码

  • decode() 解码

    # 字符串的编码和解码(gbk《——gbk2312 《——ASCII)
    # 编码(以后选UTF-8(万国码),变长的编码方式,中文占3个字符)
    # .encode(编码类型) # 默认UTF-8
    # 解码
    # .decode(编码类型)
    # 例子:
    a = '我爱你中国'
    print(a.encode('gbk'))
    b = b'\xce\xd2\xb0\xae\xc4\xe3\xd6\xd0\xb9\xfa'
    print(b.decode('gbk'))
    
    
    message = 'attack at dawn'
    # 生成字符串转换的对照表
    table = str.maketrans(
        'abcdefghijklmnopqrstuvwxyz',
        'defghijklmnopqrstuvwxyzabc'
    )
    # 通过字符串的.translate()方法实现字符串的转译
    print(message.translate(table))
    

字符串格式化操作

主要有三种

c = 1234
d = 345

print(f'{c}+{d}={c + d:.2f}')# python 3.6 以上才有的格式化字符串的语法  :.2f 输出结果保留两位小数
#下面和上面的写法等价的语法  建议使用这一种

print('%d + %d = %d' % (c, d, c + d))
print('{}+{}={}'.format(c, d, c + d))
print('{2}+{1}={0}'.format(c + d, d, c))#也可以加下标表示对应的位置

在这里插入图片描述

训练

生成随机验证码(数字由文字字母构成,长度为4)

方法一

import random
nums = [str(i) for i in range(10)]#把0~9转换成字符串列表
print(nums)
big_leteers = [chr(i) for i in range(65,91)]#把26个字母的ASCII码转换成字符
print(big_leteers)
small_letters = [chr(i) for i in range(97,123)]#小写
all_letters = big_leteers + small_letters+nums#拼接
for _ in range(4):
    selected_chars = random.choices(all_letters,k=4)  #choices()随机又放回抽样 抽4次
    print(''.join(selected_chars))#把列表内字符串连接起来
print()

方法二

import random
import string   #字符串模块
all_chars = string.ascii_letters +string.digits#把字母和数字拼接
for _ in range(4):
    selected_chars = random.choices(all_chars,k=4)
    print(''.join(selected_chars))

总结

知道如何表示和操作字符串对程序员来说是非常重要的,因为我们需要处理文本信息,Python中操作字符串可以用拼接、切片等运算符,也可以使用字符串类型的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值