当前位置: 首页 > news >正文

python学习第四天

字符串

概念

        在 Python 中,字符串可以用单引号 ' 或双引号 " 定义,由多个字符组成。(字符:就是各种文字和符号、包括了各个国家的文字、标点符号、图形符号、数字等,字符串是不可以改变的对象,如果对字符串进行了更改那么他就是新的字符串。注意:跟Java的区别python中没有字符的概念,只有字符串的概念)。

分类

普通字符串

  • 普通字符串是 Python 中最常用的字符串类型。

  • 支持转义字符,例如 \n(换行)、\t(制表符:就是回车、将光标移动到当前行的开头,后续的内容会从行首开始覆盖已有的内容)等。

  • 适用于大多数文本处理场景。

  • 多行字符串使用三重引号 ''' 或 """ 可以定义多行字符串。

# 普通字符串 支持转义字符,例如\n(换行)
string = '这是一个普通字符\n换行了'
print(string)
# \t(制表符)将光标移动到当前行的开头,后续的内容会从行首开始覆盖已有的内容 从‘替换了’把前面的字符替换了
string = '这是一个普通字符\r替换了'
print(string)
'''
    输出内容
    这是一个普通字符支持
    换行了
    替换了
'''
# 多行字符串 使用三重引号 ''' 或 """ 可以定义多行字符串。 注意喽 有变量承载的时候是多行字符串 没有的时候是注释
string = '''
多行字符串测试
这是一个普通字符\n换行了
'''
print(string)

补充常见的转义字符(留着后续方便查看)

转义字符描述示例
\\反斜杠(\"C:\\path" → C:\path
\'单引号(''It\'s me' → It's me
\"双引号(""He said, \"Hello\"" → He said, "Hello"
\n换行符(Newline)"Hello\nWorld" → Hello
World
\t水平制表符(Tab)"Hello\tWorld" → Hello World
\r回车符(Carriage Return)"Hello\rWorld" → World
\b退格符(Backspace)"Hello\bWorld" → HellWorld
\f换页符(Form Feed)"Hello\fWorld" → 换页效果
\v垂直制表符(Vertical Tab)"Hello\vWorld" → 垂直制表效果
\a响铃符(Bell)print("\a") → 终端响铃
\ooo八进制值的字符(ooo 为 1-3 位八进制数)"\101" → A(ASCII 65)
\xhh十六进制值的字符(hh 为 2 位十六进制数)"\x41" → A(ASCII 65)
\uhhhhUnicode 字符(hhhh 为 4 位十六进制数)"\u0041" → A
\UhhhhhhhhUnicode 字符(hhhhhhhh 为 8 位十六进制数)"\U0001F600" → 😀(建议试试挺有意思)

转义字符输出心

# 兄弟们快来玩谁弄得最好 打在评论区
import random
list = ["\U0001F600","\U0001F603","\U0001F604","\U0001F601","\U0001F606","\U0001F602","\U0001F923","\U0001F60A","\U0001F607","\U0001F642","\U0001F609","\U0001F60C","\U0001F60D","\U0001F618","\U0001F617","\U0001F619","\U0001F61B","\U0001F627","\U0001F62E","\U0001F632","\U0001F635","\U0001F633","\U0001F631","\U0001F628","\U0001F630","\U0001F622","\U0001F625","\U0001F62A","\U0001F613","\U0001F62D","\U0001F634","\U0001F637","\U0001F912","\U0001F915"]
def print_heart():
    heart = [
        "   ******    ******  ",
        "  *******  ******* ",
        "*****************",
        "   *************** ",
        "    *************  ",
        "     ***********   ",
        "      *********    ",
        "       *******     ",
        "        *****      ",
        "         ***       ",
        "           *        "
    ]
    for line in heart:
        random_emoji = random.choice(list)
        print(line.replace("*",random_emoji))

# 调用函数打印心形
print_heart()
'''
    输出结果 还蛮好看的
    😥😥😥😥😥😥    😥😥😥😥😥😥  
  😛😛😛😛😛😛😛  😛😛😛😛😛😛😛 
😳😳😳😳😳😳😳😳😳😳😳😳😳😳😳😳😳
   😨😨😨😨😨😨😨😨😨😨😨😨😨😨😨 
    😗😗😗😗😗😗😗😗😗😗😗😗😗  
     🤕🤕🤕🤕🤕🤕🤕🤕🤕🤕🤕   
      😢😢😢😢😢😢😢😢😢    
       😓😓😓😓😓😓😓     
        😆😆😆😆😆      
         😀😀😀       
           😄 

''' 

 二进制字符串

  • 二进制字符串通过在普通字符串前加 b 定义。

  • 表示字节数据,而不是文本数据。

  • 适用于处理二进制文件、网络传输等场景。

# 二进制字符串
string = b"这是一个二进制字符串"
print(string)
'''
    输出结果
    报错SyntaxError: bytes can only contain ASCII literal characters
'''
string = b"hello"
print(string) # 输出:b'hello'
# 想要得到 hello需要decode方法即可
string = b"hello"
print(string.decode('utf-8')) # 输出:hello

原始字符串

  • 原始字符串通过在普通字符串前加 r 或 R 定义。

  • 转义字符不会被解析,直接作为普通字符处理。

  • 常用于文件路径、正则表达式等场景,避免转义字符的干扰。

# 原始字符串 例如有转义字符的那么我们输出不需要转移的原始的文字
string = r'这是一个原始字符串\n换行了'
print(string)
'''
    输出内容
    这是一个原始字符串\n换行了
'''

分类对比

特性普通字符串原始字符串二进制字符串
定义方式使用单引号 ' 或双引号 ",例如:"Hello" 或 'World'在普通字符串前加 r,例如:r"C:\path"使用 b 前缀,例如:b"Hello"
用途表示文本数据,支持转义字符(如 \n\t 等)表示原始文本数据,忽略转义字符(常用于文件路径、正则表达式等)表示二进制数据(如字节流、网络传输数据等)
转义字符处理转义字符会被解析,例如 \n 会被解析为换行符转义字符不会被解析,\n 会被当作普通字符处理转义字符会被解析,但内容必须是 ASCII 字符或十六进制值
示例s = "Hello\nWorld"
输出:Hello
World
s = r"Hello\nWorld"
输出:Hello\nWorld
s = b"Hello"
输出:b'Hello'
是否可变不可变不可变不可变
编码方式默认使用 Unicode 编码默认使用 Unicode 编码使用 ASCII 编码或指定的编码方式
适用场景一般文本处理、字符串拼接、格式化等文件路径、正则表达式、避免转义字符干扰的场景网络传输、文件读写(二进制模式)、加密解密等
常见操作拼接、切片、格式化、查找、替换等与普通字符串相同,但转义字符不会被解析解码为普通字符串、编码为二进制数据、字节操作等

常见操作

编码

        字符串.encode('字符集')

        把字符串的编码成指定字符集

#常见操作 编码 使用utf8字符集进行编码
string = "你是个大帅哥"
print(string.encode(encoding='utf-8'))

解码

        字符串.decode('字符集')

        把字符串的解码成指定字符集

#常见操作 解码 注意编解码一致即可
string = "你是个大帅哥"
s = string.encode(encoding='utf-8')
print(s.decode(encoding='utf-8'))

常用方法

    Python 提供了许多内置的字符串方法,以下是一些常用的方法:

  • len():返回字符串的长度。

  • lower():将字符串转换为小写。

  • upper():将字符串转换为大写。

  • strip():去除字符串两端的空白字符。

  • replace(old, new):将字符串中的 old 替换为 new

  • split():将字符串按指定的分隔符分割成列表。

  • join():将列表中的字符串连接成一个字符串。

# 常见方法操作 长度:len() 小写:lower() 大写:upper() 去除首位空格:strip() 替换:replace() 分割:split() 链接:join
string = "  Hello, World!  "
print(len(string))  # 输出 15
print(string.lower())  # 输出 "  hello, world!  "
print(string.upper())  # 输出 "  HELLO, WORLD!  "
print(string.strip())  # 输出 "Hello, World!"
print(string.replace("World", "Python"))  # 输出 "  Hello, Python!  "
print(string.split(","))  # 输出 ['  Hello', ' World!  ']
print("-".join(["Hello", "World"]))  # 输出 "Hello-World"

格式化

Python 提供了多种字符串格式化的方式:

  • 使用 % 操作符(旧式格式化)(需要有占位符,占位符看下图不能随便写哈平时用%s)。

  • 使用 str.format() 方法,格式"字符串{}".format(需要格式化的字符串)。

  • 使用 f-string(Python 3.6+ 推荐使用),格式f"字符串内容{需要格式化的字符串内容}"。

占位符描述示例
%s字符串(或任何对象,自动调用 str()"Name: %s" % "Alice"
%d十进制整数"Age: %d" % 25
%f浮点数"Price: %f" % 3.14
%.nf保留 n 位小数的浮点数"Price: %.2f" % 3.14159
%x十六进制整数(小写)"Hex: %x" % 255(输出 ff
%X十六进制整数(大写)"Hex: %X" % 255(输出 FF
%o八进制整数"Oct: %o" % 8(输出 10
%e科学计数法(小写 e"Sci: %e" % 1000(输出 1.000000e+03
%E科学计数法(大写 E"Sci: %E" % 1000(输出 1.000000E+03
%g自动选择 %f 或 %e"Num: %g" % 0.0001(输出 0.0001
%c单个字符"Char: %c" % 65(输出 A
%%输出百分号 %"Discount: %d%%" % 20(输出 20%
# 格式化使用使用str.format()方法。
string = "2025-03-04"
# %操作符(旧式格式化)。主要要使用操作符%s  不能乱写 乱写会报错
print("今天是%s" % (string)) # 今天是2025-03-04
# 使用 str.format() 方法。
print("今天是{}".format(string)) # 今天是2025-03-04
# 使用 f-string(Python 3.6+ 推荐使用)。
print(f"今天是{string}") # 今天是2025-03-04

查找和替换

方法描述示例
find(sub[, start[, end]])返回子字符串 sub 第一次出现的索引,未找到返回 -1"hello world".find("e") → 1
rfind(sub[, start[, end]])返回子字符串 sub 最后一次出现的索引,未找到返回 -1"helloworld".rfind("l") → 9
index(sub[, start[, end]])返回子字符串 sub 第一次出现的索引,未找到抛出 ValueError"helloworld".index("e") → 1
rindex(sub[, start[, end]])返回子字符串 sub 最后一次出现的索引,未找到抛出 ValueError"helloworld".rindex("l") → 8
count(sub[, start[, end]])返回子字符串 sub 在字符串中出现的次数。"helloworld".count("l") → 3
replace(old, new[, count])将字符串中的 old 替换为 new,可选参数 count 指定替换次数。"helloworld".replace("l", "x") → "hexxoworld"
startswith(prefix[, start[, end]])检查字符串是否以 prefix 开头,返回 True 或 False"helloworld".startswith("he") → True
endswith(suffix[, start[, end]])检查字符串是否以 suffix 结尾,返回 True 或 False"helloworld".endswith("ss") → False
string = "helloworld"
#find(sub[, start[, end]])	返回子字符串sub第一次出现的索引,未找到返回-1。	"hello world".find("e")→1
print(string.find("e")) # 输出结果:1
#rfind(sub[, start[, end]])	返回子字符串sub最后一次出现的索引,未找到返回-1。	"hello world".rfind("l")→9
print(string.rfind("l")) # 输出结果:9
#index(sub[, start[, end]])	返回子字符串sub第一次出现的索引,未找到抛出ValueError。	"hello".index("e")→1
print(string.index("e")) # 输出结果:1
#rindex(sub[, start[, end]])	返回子字符串sub最后一次出现的索引,未找到抛出ValueError。	"hello".rindex("l")→8
print(string.rindex("l")) # 输出结果:8
#count(sub[, start[, end]])	返回子字符串sub在字符串中出现的次数。	"hello".count("l")→3
print(string.count("l")) # 输出结果:3
#replace(old, new[, count])	将字符串中的old替换为new,可选参数count指定替换次数。	"hello".replace("l", "x")→"hexxoworxd"
print(string.replace("l","x")) # 输出结果:hexxoworxd
#startswith(prefix[, start[, end]])	检查字符串是否以prefix开头,返回True或False。	"hello".startswith("he")→True
print(string.startswith("he")) # 输出结果:True
#endswith(suffix[, start[, end]])	检查字符串是否以suffix结尾,返回True或False。	"hello".endswith("lo")→True
print(string.endswith("ss")) # 输出结果:False

判断

方法描述示例
isalpha()检查字符串是否只包含字母(至少一个字符)。"hello".isalpha() → True
isdigit()检查字符串是否只包含数字(至少一个字符)。"123".isdigit() → True
isalnum()检查字符串是否只包含字母和数字(至少一个字符)。"hello123".isalnum() → True
isspace()检查字符串是否只包含空白字符(至少一个字符)。" ".isspace() → True
islower()检查字符串中的字母是否全部为小写(至少一个字母)。"hello".islower() → True
isupper()检查字符串中的字母是否全部为大写(至少一个字母)。"HELLO".isupper() → True
istitle()检查字符串是否标题化(每个单词首字母大写)。"Hello World".istitle() → True
isnumeric()检查字符串是否只包含数字字符(包括 Unicode 数字)。"½".isnumeric() → True
isdecimal()检查字符串是否只包含十进制数字字符。"123".isdecimal() → True
isidentifier()检查字符串是否是有效的 Python 标识符(变量名)。"hello_world".isidentifier() → True
isprintable()检查字符串是否全部为可打印字符。"hello\n".isprintable() → False
# isalpha()	检查字符串是否只包含字母(至少一个字符)。	"hello".isalpha()→True
print("hello".isalpha()) # 输出结果:True
# isdigit()	检查字符串是否只包含数字(至少一个字符)。	"123".isdigit()→True
print("123".isdigit()) # 输出结果:True
# isalnum()	检查字符串是否只包含字母和数字(至少一个字符)。	"hello123".isalnum()→True
print("hello123".isalnum()) # 输出结果:True
# isspace()	检查字符串是否只包含空白字符(至少一个字符)。	" ".isspace()→True
print(" ".isspace()) # 输出结果:True
# islower()	检查字符串中的字母是否全部为小写(至少一个字母)。	"hello".islower()→True
print("hello".islower()) # 输出结果:True
# isupper()	检查字符串中的字母是否全部为大写(至少一个字母)。	"HELLO".isupper()→True
print("HELLO".isupper()) # 输出结果:True
# istitle()	检查字符串是否标题化(每个单词首字母大写)。	"Hello World".istitle()→True
print("Hello World".istitle()) # 输出结果:True
# isnumeric()	检查字符串是否只包含数字字符(包括 Unicode 数字)。	"½".isnumeric()→True
print("½".isnumeric()) # 输出结果:True
# isdecimal()	检查字符串是否只包含十进制数字字符。	"123".isdecimal()→True
print("123".isdecimal()) # 输出结果:True
# isidentifier()	检查字符串是否是有效的 Python 标识符(变量名)。	"hello_world".isidentifier()→True
print("hello_world".isidentifier()) # 输出结果:True
# isprintable()	检查字符串是否全部为可打印字符。	"hello\n".isprintable()→False
print("hello\n".isprintable()) # 输出结果:False

相关文章:

  • 3.1 ARM体系结构
  • 【Linux 下Web(Apache/Nginx)入口安全事件及日志溯源流程】
  • 32.C++二叉树进阶1(二叉搜索树)
  • idea实现热部署
  • Leetcode 3469. Find Minimum Cost to Remove Array Elements
  • 在线量化算法(QAT) --学习记录2
  • FastGPT 引申:信息抽取到知识图谱的衔接流程
  • 播放器系列3——解码
  • VLM-E2E:通过多模态驾驶员注意融合增强端到端自动驾驶
  • 如何基于VBA在word中嵌入AI模型实现实时问答(SiliconflowDeepSeek)
  • 编译可以在Android手机上运行的ffmpeg程序
  • nginx accesslog 打印自定义header
  • 厦门大学第3弹:DeepSeek大模型及其企业应用实践(150页PPT,企业人员的大模型宝典)
  • 21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)(非强制登录版本完结)>
  • 历年湖南大学计算机复试上机真题
  • 【AI Guide】AI面试攻略只用看这一篇就够了!力争做全网最全的AI面试攻略——大模型(二十六)词表与词表扩充
  • Mysql学习笔记(六)Django连接MySQL
  • 机器学习算法——回归任务
  • LabVIEW虚拟频谱分析仪
  • 统计Excel列中某值出现的次数
  • 系统下载网站源码/营销型网站开发公司
  • wordpress user_register/seo常用方法
  • 常州市网站建设/成人速成班有哪些专业
  • 宿迁做网站大公司/山东服务好的seo公司
  • 网站推销怎么做ppt/seo技术有哪些
  • 福州商城网站开发公司/营销渠道分为三种模式