python基础-字符串(よん)

本文详细介绍了字符串的基本操作,包括通过下标取值、遍历字符串、统计特定字符出现次数、判断字符串中是否包含特定字符或数字,以及字符串的查找、替换、格式化和切片等方法。示例代码演示了各种操作的用法,帮助理解字符串处理的各种场景。

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

前言

字符串是一串字符,表示文本的数据类型,使用一双双引号或一双单引号括起来表示。

字符串的定义和取值

字符串通过下标取值,下标也是从0开始。

str1 = "Hello world"
str2 = "我叫刘大彪"
print(str1[6])
print(str2[4])

结果

w
彪
字符串遍历和统计
for char in str1:
    print(char)

print(len(str2))  # 获取长度方法
print(str1.count("l"))  # 获取l字母在hello world里共出现几次
print(str1.index("l"))  # 获取l字母在hello world里第一次出现的下标
H
e
l
l
o
 
w
o
r
l
d
5
3
2
字符串中空字符和数字判断
# 空白字符\t输出制表符协助文本垂直方向对齐 \n输出换行符 \r输出回车
# 判断是否有空白字符的方法
str_sp = "你好 世界\t 你好\n 二狗\r"
str_sp1 = " \t  \n  \r"
print(str_sp.isspace())  # 如果S中的所有字符都是空格且S中至少有一个字符,则返回True,否则返回False。
print(str_sp1.isspace())

# 判断字符串中是否包含数字
str_num1 = "1"
str_num2 = "1.1"
str_num3 = "\u00b2"
str_num4 = "一千零一"
print(str_num1+"isdecimal%s " % str_num1.isdecimal())  # 只能判断是否为单纯数字
print(str_num2+"isdecimal%s " % str_num2.isdecimal())  # 都不能判断小数
print(str_num3+"isdecimal%s " % str_num3.isdecimal())
print(str_num4+"isdecimal%s " % str_num4.isdecimal())

print(str_num1+"isdigit%s " % str_num1.isdigit())  # 判断为数字,还可判断unicode字符里的数学字符
print(str_num2+"isdigit%s " % str_num2.isdigit())  # 都不能判断小数
print(str_num3+"isdigit%s " % str_num3.isdigit())
print(str_num4+"isdigit%s " % str_num4.isdigit())

print(str_num1+"isnumeric%s " % str_num1.isnumeric())  # 判断数字,可判断unicode字符,还可以判断中文数字
print(str_num2+"isnumeric%s " % str_num2.isnumeric())  # 都不能判断小数
print(str_num3+"isnumeric%s " % str_num3.isnumeric())
print(str_num4+"isnumeric%s " % str_num4.isnumeric())

结果

False
True
1isdecimalTrue 
1.1isdecimalFalse 
²isdecimalFalse 
一千零一isdecimalFalse 
1isdigitTrue 
1.1isdigitFalse 
²isdigitTrue 
一千零一isdigitFalse 
1isnumericTrue 
1.1isnumericFalse 
²isnumericTrue 
一千零一isnumericTrue 
字符串查找和替换
name = "heyri"
print("name是否以hey开始%s " % name.startswith("hey"))  # 以hey开始则返回True
print("name是否以ri结束%s " % name.endswith("ri"))
print("name是否有y字符%s " % name.find("y"))  # 返回2表示有此字符
print("name是否有y字符%s " % name.find("s"))  # 返回-1表示没有此字符,若需要从右到左查找则使用rfind方法
print(name)
print("name被替换成%s" % name.replace("hey", "ha"))  # 只临时被替换,本身变量没有被替换
print(name)

结果

name是否以hey开始True 
name是否以ri结束True 
name是否有y字符2 
name是否有y字符-1 
heyri
name被替换成hari
heyri
字符串的格式化操作
pom = ["登鹳雀楼",
       "王之涣",
       "白日依山尽",
       "黄河入海流",
       "欲穷千里目",
       "更上一层楼"]
for pom_str in pom:
    print("|%s|" % pom_str.center(10, " "))  # 居左对齐ljust(10) 居右对齐rjust(10) 居中对齐center(10)

pom2 = ["登鹳雀楼\t",
       "王之涣\r",
       "白日依山尽\n",
       "    黄河入海流     ",
       "欲穷千里目    ",
       "更上一层楼    "]
for pom_str in pom2:
    print(pom_str)  # 未格式化前的输出不规整
for pom_str in pom2:
    # 先去除空格
    print("|%s|" % pom_str.strip().center(10, " ")) # strip只能去除前后字符的空格,中间字符无法去除

pom_str1 = "登鹳雀楼\t王之涣\t白日依山尽\n   \r黄河入海流     欲穷千里目    更上一层楼    "
print("str=%s" % pom_str1)
# 拆分字符串,去掉空格
pom_list = pom_str1.split()
print(pom_list)
# 合并字符串
pom_result = " ".join(pom_list)
print(pom_result)

结果

|   登鹳雀楼   |
|   王之涣    |
|  白日依山尽   |
|  黄河入海流   |
|  欲穷千里目   |
|  更上一层楼   |
登鹳雀楼	
王之涣
白日依山尽

    黄河入海流     
欲穷千里目    
更上一层楼    
|   登鹳雀楼   |
|   王之涣    |
|  白日依山尽   |
|  黄河入海流   |
|  欲穷千里目   |
|  更上一层楼   |
str=登鹳雀楼	王之涣	白日依山尽
黄河入海流     欲穷千里目    更上一层楼    
['登鹳雀楼', '王之涣', '白日依山尽', '黄河入海流', '欲穷千里目', '更上一层楼']
登鹳雀楼 王之涣 白日依山尽 黄河入海流 欲穷千里目 更上一层楼
字符串的切片
num_str = "0123456789"
print(num_str)
print("[2:6]表示从下标为2开始截取到下标为6不包括6的字符%s" % num_str[2:6])
print("[2:]表示从下标为2开始截取到末尾的字符%s" % num_str[2:])
print("[0:6]表示从下标为0开始截取到下标为6不包括6的字符%s" % num_str[0:6])
print("[:6]表示从最开始截取到下标为6不包括6的字符%s" % num_str[:6])
print("[:]表示截取全部%s" % num_str[:])
print("[::2]表示从头开始截取到最后,但每隔一个字符%s" % num_str[::2])
print("[1::2]表示从下标为1开始截取到最后,但每隔一个字符%s" % num_str[1::2])
print("[-1]表示取最后一个字符%s" % num_str[-1])
print("[2:-1]表示从下标为2开始截取到最后一个,但不包括最后一个(最后一个下标为-1)%s" % num_str[2:-1])
print("[-2:]表示从下标为-2开始截取到最后%s" % num_str[-2:])
print("[0::-1]表示从下标为0开始向左切片%s" % num_str[0::-1])
print("[-1::-1]表示逆序%s" % num_str[-1::-1])
print("[::-1]表示逆序%s" % num_str[::-1])

结果

0123456789
[2:6]表示从下标为2开始截取到下标为6不包括6的字符2345
[2:]表示从下标为2开始截取到末尾的字符23456789
[0:6]表示从下标为0开始截取到下标为6不包括6的字符012345
[:6]表示从最开始截取到下标为6不包括6的字符012345
[:]表示截取全部0123456789
[::2]表示从头开始截取到最后,但每隔一个字符02468
[1::2]表示从下标为1开始截取到最后,但每隔一个字符13579
[-1]表示取最后一个字符9
[2:-1]表示从下标为2开始截取到最后一个,但不包括最后一个(最后一个下标为-12345678
[-2:]表示从下标为-2开始截取到最后89
[0::-1]表示从下标为0开始向左切片0
[-1::-1]表示从最后一个字符向左切片,则得到逆序9876543210
[::-1]表示逆序9876543210
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值