字符串(2021-9-26)

本文介绍了Python中的字符串,包括字符串的定义、字符类型、不可变性、字符编码如ASCII和Unicode,以及字符串的操作如查找、拼接、比较等。重点讨论了字符编码表在存储和比较字符时的作用,还提供了多个实践练习来加深理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串(2021-9-26)

1、什么是字符串(str)

1)字符串是容器数据类型;将’’、""、’’’’’’、""""""作为容器的标志,里面直接多个符号,每一个符号就是字符串的一个元素:‘元素1元素2元素3…’
2)字符串不可变;字符串是有序的
3)元素 - 所有的符号都可以作为字符串的元素;字符串中的元素又叫字符;字符分为普通字符和转义字符两种
a、字符串的元素(字符)可以是任意符号
str1 = 'afm,/.vrw.kin的vjufeINH*(#!*124'
print(str1)                             # afm,/.vrw.kin的vjufeINH*(#!*124
b、空字符串
str2 = ''
str3 = ""
str4 = ''''''
str5 = """"""
print(type(str4), len(str4))            # <class 'str'> 0
c、多行字符串
str1 = 'abc
     123 '                              # 报错
st1 = '''
        faf
        123'''
print(st1)                              #  faf
                                        #  123

str2 = 'abc\n123'
print(str2)                             # abc

                                        # 123
4)字符串是有序的
print('abc' == 'acb')                   # 报错

2、字符串中的元素 - 字符

1)普通字符 - 符号在字符串中表示符号本身的字符就是普通字符
2)转义字符 - 在特定符号前加\表示特殊功能或者特殊意义的字符

\n - 换行
\t - 水平制表符(相当于tab键)
’ - 表示一个普通的单引号
" - 表示一个普通的双引号
\ - 表示一个普通的反斜杠
\u4四的16进制数 - 编码字符(四的16进制数是字符的编码值)

str1 = '\tabc\n123'
print(str1)
str2 = 'It\' OK'
print(str2)                               # It' OK
str3 = "It' OK"
print(str3)                               # It' OK
双引号同理
str5 = 'C:User\\name\test\小明'
print(str5)                               # C:User\name    est\小明
str6 = '\u4e00123'
print(str6)                               # 一123

3、字符编码

1)计算机在存储数据的时候只能存数字(数字的二进制补码)
2)为了能够让计算机存储字符,给每个字符对应了一个固定数字。每次在存在这个字符的时候就存储这个字符对应的数字。

每个字符对应的数字就是这个字符的编码值。
例:‘a’ - 97

4、编码表 - 记录字符和数字对应的关系的表

常用的编码表:ASCII码表、Unicode编码表(Python)

1)ASCII码表:
a、只记录了美国的符号(这里没有记录中文)
b、数字字符在大写字母的前面,大写在小写字母的前面,并且这三类符号之间不连续
2)Unicode编码表:
a、是ASCII码表的扩展(包含了ASCII码表),记录了世界上所有的国家所有的名族的所有语言的符号
b、中文范围:4e00 ~ 9fa5

5、编码值的使用

1)chr(编码值) - 获取编码值对应的字符
print(chr(97))                             # a
print(chr(0x5fa5))                         # 徥

练习:打印所有中文

num = 0
for a in range(0x2800, 0x28ff+1):
    num += 1
    print(chr(a), end=' ')
    if num == 30:
        print()
        num = 0
2)ord函数

ord(字符) - 获取字符编码值

print(ord('杜'), ord('正'), ord('勇'))       # 26460 27491 21191
3)编码字符

\u四位的16进制编码值

print('a\u0061')                            # aa

判断是不是中文

c = '你'
if '\u4e00' <= c <= '\u9fa5':
    print('中文')                            # 中文

6、进制

1)十进制

基数:0 ~ 9
表示方式:直接写

num = 32567627
print(num)                                  # 32567627
2)二进制

基数:0、1
表示方式:加前缀0b/0B

num = 0b101
print(num)                                  # 5
3)八进制

基数:0 ~ 7
表示方式:加前缀0o/0O

num = 0o352                                 # 234
print(num)
4)十六进制数

基数:0 ~ 9 ~ a ~ f(A ~ F)
表示方式:加前缀0x/0X
转换函数:hex(数据)

num = 0xaf2
print(num)                                   # 2802

7、字符串相关操作和相关函数

1)查 - 获取字符

字符串获取字符和列表获取元素的语法一样

str1 = 'do you like LOL? Yes I do!'
print(str1[3], str1[-1])                     # y !

注意:一个转义字符的长度是1

str1 = '\tabc\n123\u6afa'
print(str1[1], str1[-1])                     # a 櫺
print(str1[1:6])                             # abc
                                             # 1
print(str1[-1:2])                            #
print(str1[1:7:2])                           # ac1
print(str1[-1::-2])                          # 櫺2
                                             # b
print(str1[2:])                              # bc
										     # 123櫺
print('-----------------------------------------------------------------')
for a in str1:
    print(a)
2)+、*
print('abc' + 'hello')                       # abchello
print('abc' * 3)                             # abcabcabc
3)比较运算
a、两个字符串比较大小,比较的是第一对不相等字符的编码值的大小
b、两个字符比较大小,比较的是字符的编码值的大小

已知字符X:
判断是否是数字字符:‘0’ <= X <= ‘9’

print('abc' == 'acb')                        # False
print('abc' > 'Abc123')                      # True
print('你好' > 'hello')                       # True

练习:已知一个字符串,统计字符串中中文出现的次数

str1 = '-==sh是uM09K你好!'
num = 0
for chi in str1:
    if '\u4e00' <= chi <= '\u9fa5':
        num += 1
print(num)

练习2:判断指定字符串是否是纯数字字符串

'234445'  ->'122h2333' -> 不是
str1 = '234445'
str2 = '122h2333'
list1 = ['234445', '122h2333']
for st in str1:
    if not '0' <= st <= '9':
        print('不是')
        break
else:
    print('是')

练习3: 提取字符串中所有的大写字母

'-==sh是uM09K你好!'  -> 'MK'
str3 = '-==sh是uM09K你好!'
str4 = ''
for a in str3:
    if 'A' < a <= 'Z':
        str4 += a
print(str4)
4)in 和 not in

字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串

print('a' in 'abc')                           # True
print('ac' in 'abc')                          # False
5)相关函数
a、len(字符串)
b、str(数据) - 将数据转换成字符串(任何类型数据都可以转换成字符串;转换的时候直接在数据的打印值外面加引号)
x = 23
str(23)                                       # '23'
str(12.5)                                     # '12.5'
str([10,20])                                  # '[10, 20]'
str({'a': 10, "b": 20})
print({'a': 10, "b": 20})                     # "{'a': 10, 'b': 20}"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值