python基础知识-字符串

本文详细介绍了Python中的字符串基础知识,包括字符串的定义、字符类型、查询、运算、比较以及字符串相关的方法。此外,还讲解了字符串的编码概念,如ASCII和Unicode编码表,并探讨了如何在Python中使用编码值。

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

python基础知识-字符串

一.字符串

1.认识字符串

(1)字符串是容器型数据类型(能同时保存多个文字符号);将单引号,双引号或者三个单引号,三个双引号作为容器标志。里面的每一个符号都是字符串中的元素。(三个单引号和三个双引号放在不同位置的作用不同;注释:文件开头,函数的开头,类的开头;其余位置都是作为字符串的引号作用)

多行字符串-可以任意换行(“”" “”"或者’‘’ ‘’')

str1='小明'
str2="小明"
str3=''' 小明'''
str4=""" 小明"""

(2)字符串不可变;字符串有序(支持下标)

(3)字符串的元素:字符串引号中的每一个独立的符号都是字符串的元素,字符串的元素又叫字符;任何文字符号都可以是字符串的元素(包括英文符号,中文符号,阿拉伯数字,表情符号,汉语,日语…)

#1.空串(不能有任何符号,包括空格)
str6=''
print(type(str6),len(str6))
str7=' '
print(type(str7),len(str7))
#<class 'str'> 0
<class 'str'> 1

2.字符

字符串中字符分为两种:普通字符和转义字符

(1)普通字符——在字符串中表示符号本身的字符就是普通字符

#如果输出的字符和字符串中的字符一致

(2)转义字符:在字符串中有特殊意义或者特殊功能的符号就是专业字符(在特定的符号前面加一个 \ 来表示特殊意义或者特殊功能)

  • \n——换行(相当于按回车),\t——水平制表符(相当于按tab键)
  • \'——表示普通的单引号;\"——表示普通的双引号;\\——表示普通的反斜杠

(3)r字符串:在字符串的引号前面加r或者R,可以让字符串中所有的转义字符串的功能都失效(让所有字符都变成普通字符)

#原本\n和\a会转义,加了r将所有的转义功能失效
path=r"C:\nudows\app\pacg\a.txt"
print(path)
#
C:\nudows\app\pacg\a.txt

3.字符串的查询

1.字符串的查:字符串获取字符的方法和列表的获取元素的方法一样

  • 1.获取单个字符

    字符串[下标]

    注意转义字符的长度是1

  • 字符串切片

    字符串[开始下标:结束下标:步长]

    str1="good good study!"
    print(str[1:-2:2])
    #odgo td
    
  • 遍历字符串

    for i in range(len(str1)):
        print(i,str1[i])
    #结果
    0 g
    1 o
    2 o
    3 d
    4  
    5 g
    6 o
    7 o
    8 d
    9  
    10 s
    11 t
    12 u
    13 d
    14 y
    15 !
    #方法2:for i,j in enumerate(str1):
    #print(i,j)
        
    

4.字符串的相关运算

1.字符串的加法运算———字符串拼接

  • 字符串1+字符串2——将两个字符串合并成一个字符串
str1="hello"
str2="你好"
print(str1+str2)
#"hello你好"

print(str1+' '+ str2)
#hello 你好



#案例1
#提取所有字符串中的所有数字字符
str1='世界上442,。;’//'
new-str1=''
for i in str1:
    if '0'<=i<='9':
        new_str1+=i
print(new_str1)


#案例
#在每一个数字后面插入一个%
str1='世界上442,。;’//'
new-str1=''
for i in str1:
    if '0'<=i<='9':
        new_str1+=i+'%'
    else:
        new_str1+=i
print(new_str1)


#案例
#将字符串中的所有数字字符都改成'+'
str1 = '世界上442,。;’//'
new_str1 = ''
for i in str1:
    if '0' <= i <= '9':
        new_str1 += '+'
    else:
        new_str1 += i
print(new_str1)
#世界上+++,。;’//

2.字符串的乘法运算

  • 字符串*N或者N**字符串——让字符串中的元素重复出现N次产生一个新的字符串

3.字符串的比较运算

  • 比较是否相等:==,!=
  • 比较大小:两个字符串比较大小,比较的是第一对不相等的字符的编码值的大小

4.in和not in

  • 字符串1 in 字符串2——字符串1是否是字符串2的子串(字符串2是否包含字符串1)

    print('a' in 'abc')#True
    print("ab" in "abc")#True
    print("ac" in "abc")#False,必须连续在一起
    
    
    

5.判断字符的性质

  • 是否是数字字符:‘0’<=i<=‘9’
  • 是否是小写字母:‘a’<=i<=‘z’
  • 是否是大写字母:‘A’<=i<=‘Z’
  • 是否是字母:‘a’<=i<=‘z’ or ‘A’<=i<=‘Z’
  • 是否是中文:‘\u4e00’<=i<=‘\u9fa5’

6.相关函数

(1)max,min,sorted

print(max("helloworld"))#w
print(sorted('helloworld'))#是一个列表

(2)len(字符串)

(3)str(数据)–任何数据都可以转换为字符串;转换的时候是在数据的打印值外面加引号

list1=['yuting',18,'女']
print(str(list1))
#同时如果有多个形式的引号,会统一为单引号
#['yuting',18,'女']
['yuting', 18, '女']#结果多了个空格,即规范格式

(4)eval(字符串)——去除字符串的引号,获取引号中表达式的结果(功能超级强大)

eval('100')
eval('1.23')
b1=eval('10'+'20')


#
a=int(input("请输入a的值:"))
b=int(input("请输入b的值:"))
value=input("请输入value的值(+,-,*,/):")
result=eval(f'a{value}b')
print(result)

#
请输入a的值:10
请输入b的值:20
请输入value的值:+
30

7.字符串的相关方法

形式:字符串.XXX

1.字符串.join(序列)-将序列中的元素用指定的字符串来连接成一个新的字符串(序列中的元素必须全是字符串

list1=["a","b","c"]
result='+'.join(list1)
print(result)
#a+b+c
nums=[88,98,55,45]
#注意不能直接将nums转换为列表,会出出现每个数字都会被拆成单个然后用+来连接。先遍历取出每个数字,再将其转换为字符串
result=' + '.join([str(i) for i in nums])
print(result)

2.字符串1.count(字符串2)-统计字符串1中字符串2的个数

msg='how are you doing now? i am teaching my sister !'
result=msg.count('a')
pritn(result)
print(msg.count('you'))

#3 1
  • 字符串1.split(字符串2)-将字符串1中所有的字符串2作为切割点对字符串1进行切割(返回的是一个列表
msg='how are you doing now? i am teaching my sister !'
result=msg.split("you")
print(result)
#结果
['how are ', ' doing now? i am teaching my sister !']
  • 字符串1.split(字符串2,N)-将字符串1中前N个字符串2作为切割点对字符串1进行切割(返回的是一个列表

    msg='how are you doing now? i am teaching my sister !'
    result=msg.split(" "3)
    print(result)
    
    #['how', 'are', 'you', 'doing now? i am teaching my sister !']
    
  • 字符串1.replace(字符串2,字符串3)-将字符串1中的所有的字符串2替换为字符串3

    msg='how are you doing now? i am teaching my sister !'
    result=msg.replace("you",'me')
    print(result)
    
    #how are me doing now? i am teaching my sister !
    
    #另类用法:可以用来删除某个字符串(替换为空)
    msg='how are you doing now? i am teaching my sister !'
    result=msg.replace("you",'')
    print(result)
    
    #how are  doing now? i am teaching my sister !
    
    
  • 字符串1.replace(字符串2,字符串3,N)-将字符串1中的前N个字符串2替换为字符串3

    msg='how are you doing now? i am teaching my sister !'
    result=msg.replace("you",'+',2)
    print(result)
    #将前两个you替换为+
    #how are + doing now? i am teaching my sister !
    

5.字符串.strip(空白字符)–将字符串左右两边的空白字符(包括空格,换行…)删除

msg='how are you doing now? i am teaching my sister !'

print(msg)
print(msg.strip())

#
     how are you doing now? i am teaching my sister    !
how are you doing now? i am teaching my sister    !

6.字符串.isupper()–判断字符串是否是纯大写字母字符串

​ 字符.isupper()–判断字符是否是纯大写字母字符

7.字符串.islower()–判断字符或者字符串是否全是小写祖母

8.字符串.isdigit()–判断字符或者字符串是否全是数字字符

9.字符串.upper()–将字符串转换为大写字母

​ 字符.upper()–将字符转换为大写字母

10字符串.lower()–将字符串转换为小写字母

​ 字符.upper()–将字符转换为小写字母

#应用:判断是否是字母
char='sdfas'
if char.islower() or char.isupper():
    print("char是字母")
else:
    print("char不是字母")
    
#一般逻辑:判断是否在大写字母或者小写字母
if 'a'<=char<='z' or 'A'<=char<='Z':
    print("char是字母")
else:
    print("char不是字母")

8.格式字符串

解决的问题:字符串内容不确定

1.语法:包含格式占位符的字符串%(数据1,数据2,数据3…)

注意()中的数据必须和前面字符串中的占位符一一对应

2.常见的格式占位符:

  • %s:可以给任何类型的数据据占位(原样输出)
  • %d:可以给任何数字占位(整数占位符,如果给的数字是小数,会自动转换为整数再拼接到字符串中)
  • %f:可以给任何数字占位(浮点占位符)
  • %.Nf:可以控制保留N个小数(N不声明默认是保留六位小数)
name=input("请输入学生的名字:")
age=int(input("请输入年龄:"))

#输出:XXX今年XX岁
#方法1:字符串拼接;
#注意字符串的拼接只能对字符串进行操作,age为整型,不能进行拼接,要转换为字符串
msg=name+'今年'+str(age)+'岁'
print(msg)

#方法2,格式字符串-包含占位符的字符串
#格式占位符必须和数据一一对应
name=input("请输入学生的名字:")
age=int(input("请输入年龄:"))
msg="%s今年%s岁"%(name,age)
print(msg)
#
请输入学生的名字:张三
请输入年龄:28
张三今年28#%.Nf
result='用去%.2f元,还剩余%.2f元'%(41.50,99.87)
print(result)
#用去41.50元,还剩余99.87元
  • f-string:在字符串的最前面(引号前面)加一个f,就可以在字符串中通过{表达式}中表达式的结果来给字符串提供内容

    name=input("请输入学生的名字:")
    age=int(input("请输入年龄:"))
    msg=f'{name}今年{age}岁'
    print(msg)
    
    
    
    a=1.234
    b=2.3
    print(f'{a}+{b}={a+b}')
    1.234+2.3=3.534
    
    
    #{表达手机:.Nf}-控制小数保留位数
    a=1.234
    b=2.3
    print(f'{a:.2f}+{b:.3f}={a+b:.0f}')
    
    1.23+2.300=4
    
    
    #{表示式:.N%}-控制数字显示成百分比,N控制百分比小数位数
    c=0.98
    print(f'{c:.0%}')
    
    
    #{表达式:,.Nf}-标准金额拼接
    d=357000
    print(f'{d:,.2f}')
    #357,000.00
    

二.字符串编码

1.计算机存储方式

计算机存储只能存数字(存的是数字的二进制补码)

1.1 字符编码

为了能让计算机存储文字符号,给每个符号对应了了一个固定的数字,每次再需要存储这个符号的时候,就去存储这个固定的数字,每个对应的那个数字就是这个符号的编码值。

1.2 编码表

保存字符和字符对应的编码表

(1)ASCII表(美国信息码:只包含了美国人常用的符号,共128个)

数字字符;大写字母(A-65开始);小写字母(a-97开始));英文输入法下的特殊符号

(2)Unicode表(python)统一码或者万国码:包含了世界上所有国家所有民族的所有语言符号

  • Unicode编码表包含了ASCII(前128个字符就是ASCII码表中的内容)
  • 中文编码范围:(0x)4e00-(0x)9fa5(0x-十六进制,不加0x则是十进制)
1.3编码值的使用

(1)chr(编码值)-获取编码值对应的字符

print(chr(97))
print(chr(0x4e00),chr(0x9fa5)#最开始的一个字符和最后一个字符
#a
#一, 龥

(2)ord(字符)-获取指定字符串对应的编码值(十六进制)

注意:字符指的是长度为1的字符串

print(ord("a"))

#97


#将小写字母转为大写字母(小写字母和大写字母之间差为32)
char="m"
print(chr(ord(char)-32))
#M

(3)编码字符:\u4位的16进制编码值

在字符串中提供字符的方式有两种:a.直接提供字符;b.使用编码字符

#hex(十进制数)-获取指定数字对应的16进制表达方式
#注意hex()中可以转换任何进制的数为16进制

str1='a'
print(a)

#如果我们直到字符编码值是多少,但是不知道字符是什么的时候,就可以使用编码值来表示这个字符
str2='\u0061'
print(str2)
#a.


#判断是否是中文

char='a'
if '一'<=char<='\u9fa5':#在知道第一个中文开始的情况下或者用编码范围(4e00-9fa5)
    print(char,"是中文字符")
else:
    print(char,"不是中文字符")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值