首页 > 其他分享 >05. 字符串

05. 字符串

时间:2024-09-16 18:23:42浏览次数:8  
标签:name 05 text print result str 字符串

一、什么是字符串

  字符串用来表示一段文本信息。在 Python 中,字符串需要使用引号引起来,引号可以是单引号,也可以是双引号,但是不要混的用。相同的引号间不能嵌套使用。

s = 'hello'
print(s)
print(type(s))

s = "hello"
print(s)
print(type(s))

  如果双引号和单引号混合使用,会报以下错误:

SyntaxError: EOL while scanning string literal

  相同的引号之间不能嵌套使用,不同的引号之间可以嵌套使用;

s = "子曰:'学而时习之,不亦说乎'"

  单引号和双引号不能跨行使用,如果要换行使用,使用 \ 连接。

s = "锄禾日当午,\
汗滴禾下土。\
谁知盘中餐,\
粒粒皆辛苦。"

print(s)

  但是上述程序运行之后,输出结果还是在一行。如果想要换行,并且保留原有的字符串格式,我们可以使用长字符串。长字符串使用三重引号来表示。

s = '''锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦。'''

print(s)

二、转义字符

  可以使用 \ 作为转义字符。通过转义字符,可以在字符串中使用一些特性的内容

转义字符 说明
\n 换行符,将光标位置移到下一行开头
\r 回车符,将光标位置移到本行开头
\t 水平制表符,也即 Tab 键,一般相当于四个空
\a 蜂鸣器响铃
\b 退格(Backspace),将光标位置移到前一列
\\ 反斜线
\' 单引号
\" 双引号
\ 在字符串行尾的续行符,即一行未完,转到下一行继续写
\uxxxx 表示 Unicode 编码
s = "子曰:\"学而时习之,不亦说乎\""
print(s)

s = "锄禾日当午,\n\
汗滴禾下土。\n\
谁之盘中餐,\n\
粒粒皆辛苦。"

print(s)

s = '\u2200'
print(s)

三、格式化字符串

【1】、使用 % 占位符格式化字符串

  在创建字符串时,可以在字符串中指定占位符;%s 在字符串中表示任意字符串,%f 表示浮点数的占位符,%d 表示整数的占位符。

# %s表示字符串占位符
name = "Sakura"
print("name: %s" %name)

age = 10
# 值按照位置与占位符一一对应
print("name: %s, age: %d" %(name,age))

# 以字典的形式传值,打破位置的直线
info = "name: %(name)s, age: %(age)d" %{'name':'Sakura','age':10}
print(info)

# %m.ns字符串的长度限制在m-n之间
a = "hello %3.5s' %'abcdefg"
print(a)

# %f表示浮点数占位符
# %.nf表示保留n位小数,其余位四舍五入
a = 'result = %.2f' %123.456
print(a)

# %d表示整数占位符,如果是浮点是,直接舍弃小数部分
a = "result = %d" %123.95
print(a)

【2】、使用 format() 方法格式化字符串

  我们还可以使用 format() 来进行格式化字符串,该方法是在 Python 2.6 之后的版本引入的。

# 按照位置依次取值
info = "name: {}, age: {}".format("Sakura",10)
print(info)

# 按照位置取值,支持索引
info = "name: {0}, age: {1}".format("Sakura",10)
print(info)

# 打破位置的限制,按照key=value的方式传值
info = "name: {name}, age: {age}".format(name="Sakura",age=10)
print(info)

  无论是 % 还是 format(),含有占位符的字符串也是可以被复用的;

info = "name: %s, age: %d"
info1 = info %("Sakura",10)
info2 = info %("Mikoto",14)
print(info1)
print(info2)

info = "name: {}, age: {}"
info1 = info.format("Sakura",10)
info2 = info.format("Mikoto",14)
print(info1)
print(info2)

【3】、f 字符串

  在 Python 3.6 之后的版本中,我们可以通过字符串前添加一个 f 来创建一个格式化字符串。在格式化字符串中可以直接嵌入变量。

name = "Sakura"
age = 10
info = f"name: {name}, age: {age}"
print(info)

四、原生字符串

  在 Python 中有些字符会有特殊的含义,会进行转义,但是有时候我们不想转义它们,只是想把它们作为普通的字符串打印出来,这是我们可以使用原生字符串,只需在字符串前面加一个 r 即可。

path = r"C:\Program File\navicat\navicat.exe"
print(path)

五、字符串的常见操作

【1】、字符串相加

  在 Python 中,字符串支持进行相加操作,即将两个字符串进行拼接,使用加(+)运算符实现。语法格式如下:

first_name = "Sakura"
last_name = "Kinomoto"
name = first_name + " " + last_name
print(name)

【2】、字符串乘法

  在 Python 中,使用数字 n 乘以一个字符串会生成一个新的字符串。新字符串的内容为原来字符串被重复 n 次的结果。

names1 = "Sakura "
names2 = names1 * 3
print(names2)

【3】、获取字符串的长度

len(s)                                          # 获取字符串长度
name = "Sakura"
print(len(name))

【4】、大小写转换

str.upper()                                     # 将字符串转换为大写
str.lower()                                     # 将字符串转换为小写
str.capitalize()                                # 将字符串的首字母大写
str.swapcase()                                  # 将字符串的大小写反转
str.title()                                     # 将字符串中的每个大慈的首字母大写
name = "My name is Sakura Kinomoto"

print("原本的值:",name,end="\n\n")

# 将字符串转为大写,作为结果返回,原字符串不变
result = name.upper()
print("转换为大写后的结果:",result,end="\n\n")

# 将字符串转为小写,作为结果返回,原字符串不变
result = name.lower()
print("转换小写后的结果:",result,end="\n\n")

# 将字符串的首字母大写,作为结果返回,原字符串不变
result = name.capitalize()
print(f"首字母大写后的结果:",result,end="\n\n")

# 将字符串的大小写反转,作为结果返回,原字符串不变
result = name.swapcase()
print("大小写反转的结果:",result,end="\n\n")

# 将字符串的每个单词的首字母大写,作为结果返回,原字符串不变
result = name.title()
print("大小写反转的结果:",result,end="\n\n")

【5】、判断字符串的组成

str.isupper()                                   # 判断字符串是否全为大写
str.islower()                                   # 判断字符串是否全为小写
str.istitle()                                   # 判断字符串中每个单词是否首字母大写
str.isalnum()                                   # 判断字符串是否由字母或数字组成
str.isdecimal()                                 # 判断字符串是否由数字组成
str.isalpha()                                   # 判断字符串是否由字母组成
str.isspace()                                   # 判断字符串是否由空格组成
name = "Sakura Kinomoto"

print("字符串是否全为大写",name.isupper())
print("字符串是否全为大写",name.islower())
print("字符串中每个单词的首字母是否大写",name.title())
print("字符串是否由字母和数字组成",name.isalnum())
print("字符串是否由数字组成",name.isdecimal())
print("字符串是否由字母和数字组成",name.isalpha())
print("字符串是否由空格组成",name.isspace())

【6】、判断字符串是否为数字

str.isdecimal()                                 # 判断字符串是否由数字组成
str.isdigit()                                   # 判断字符串是否为阿拉伯形式的数字
str.isnumeric()                                 # 判断字符串是否为数字
num1 = b"3"                         # 阿拉伯格式的数字
num2 = "3"                          # 阿拉伯格式的数字
num3 = "三"                         # 中文简体数字
num4 = "叁"                         # 中文繁体数字
num5 = "Ⅲ"                         # 罗马格式的数字
num6 = "③"                          # 阿拉伯格式的数字

print("isdecimal()方法判断")
#print(num1,":",num1.isdecimal())  # 无此方法
print(num2,":",num2.isdecimal())
print(num3,":",num3.isdecimal())
print(num4,":",num4.isdecimal())
print(num5,":",num5.isdecimal())
print(num6,":",num6.isdecimal())

print("\nisdigit()方法判断")
print(num1,":",num1.isdigit())
print(num2,":",num2.isdigit())
print(num3,":",num3.isdigit())
print(num4,":",num4.isdigit())
print(num5,":",num5.isdigit())
print(num6,":",num6.isdigit())

print("\nisnumber()方法判断")
#print(num1,":",num1.isnumeric())  # 无此方法
print(num2,":",num2.isnumeric())
print(num3,":",num3.isnumeric())
print(num4,":",num4.isnumeric())
print(num5,":",num5.isnumeric())
print(num6,":",num6.isnumeric())

【7】、判断字符串以什么开头以什么结尾

str.startswith(prefix[, start[, end]])          # 判断字符串是否以什么开头
str.endswith(suffix[, start[, end]])            # 判断字符串是否以什么结尾
text = "中国电信"

# 判断字符串是否以什么开头
if text.startswith("中国"):
    print("以中国开头")
else:
    print("不是以中国开头")

# 判断字符串是否以什么结尾
if text.endswith("电信"):
    print("以电信结尾")
else:
    print("不是以电信结尾")

【8】、删除字符串的前缀或后缀

str.removeprefix(prefix, /)                     # 删除字符串的前缀
str.removesuffix(suffix, /)                     # 删除字符串的后缀
url = "https://baidu.com"
result = url.removeprefix("https://")
print(result)
result = result.removesuffix(".com")
print(result)

【9】、字符串的替换

str.replace(old, new[, count])                  # 替换指定的字符串
text = "中国电信,电信流量卡"
# 字符串的替换
result = text.replace("电信","移动")
print(text)
print(result)

【10】、字符串的切割

str.split(sep=None, maxsplit=- 1)               # 以sep字符切割maxsplit次字符串
str.rsplit(sep=None, maxsplit=- 1)              # 以sep字符切割maxsplit次字符串,从右边开始切割
str.partition(sep)                              # 以sep字符切割一次字符串
str.splitlines(keepends=False)                  # 以换行为切割符,切割字符串
text = "Sakura,10,[email protected]"

# 字符串的切割
data_list = text.split(',')
print(data_list)

# 我们还可以指定最多切割几次
data_list = text.split(',',maxsplit=1)
print(data_list)

# 从右边开始切割
data_list = text.rsplit(',',1)
print(data_list)

# 以指定的字符从分割
data_list = text.partition(",")
print(data_list)
text = """
Hello world!
My name is Sakura!
"""

data_list = text.splitlines()
print(data_list)

【11】、字符串的拼接

str.join(iterable)                              # 字符串的拼接
# 这是一个列表
name_list = ["Sakura","Mikoto","Shana"]
# 字符串的拼接
str = '/'.join(name_list)
print(str)

【12】、去除字符串的两端的空白

str.strip([chars])                              # 去除两端空白
str.lstrip([chars])                             # 去除左端空白
str.rstrip([chars])                             # 去除右端空白
text = "  中国电信  中国移动   中国联通"
print(text)

# 去掉字符串两端的空白
result = text.strip()
print(result)

# 去掉字符串左边的空白
result = text.lstrip()
print(result)

# 去掉字符串右边的空白
result = text.rstrip()
print(result)

【13】、判断字符串是否包含指定字符串

object.__contains__(self, item)                 # 判断字符串是否包含指定字符串
text = "中国移动通信"

result = text.__contains__("移动")
print(result)

result  = "移动" in text
print(result)

【14】、统计字符串中某个字符串出现的次数

str.count(sub[, start[, end]])                  # 统计字符串中某个字符串出现的次数
name = "Sakura"
# 统计a出现的次数
print(name.count('a'))

【15】、查找指定字符串

str.find(sub[, start[, end]])                   # 查找指定字符串
str.index(sub[, start[, end]])                  # 查找指定字符串第一次出现的索引
name = "Sakura"
print(name.find('a'))
print(name.index('a'))

find() 方法如果没找到则返回 -1;

index() 方法如果找不到,程序会抛出异常:ValueError: substring not found;

【16】、字符串的填充

str.center(width[, fillchar])                   # 字符串的填充,只能填充一种字符
str.ljust(width[, fillchar])                    # 字符串填充,内容在左边
str.rjust(width[, fillchar])                    # 字符串填充,内容在右边
str.zfill(width)                                # 字符串填充,左边补0
name = "Shana"
# 字符串的填充,只能填充一种字符
print(name.center(20,'*'))
print(name.ljust(20,'*'))
print(name.rjust(20,'*'))

# 字符串填充,左边补0
data = "1001"
print(data.zfill(8))

【17】、字符串转换成字节类型

str.encode(encoding='utf-8', errors='strict')   # 字符串转换成字节类型
bytes.decode(encoding='utf-8', errors='strict') # 将字节类型转换为字符串
data = "中国移动"
v1 = data.encode("utf-8")
print(v1)

data = v1.decode("utf-8")
print(data)

标签:name,05,text,print,result,str,字符串
From: https://www.cnblogs.com/kurome/p/18416493

相关文章

  • 多组列表共同表达同一数据 scratch 20240916_170510
    需求如果点击空格就会产生一个克隆体克隆体会随机位置克隆体它会有自己的id同时克隆体会有自己的座标要求我们使用三个列表分别记录他们的id,x,y坐标同时如果点击了某一个克隆体那么就从列表中把它相对应的一组数据删除功能克隆体的id三个列表一个列表存id一个列表......
  • 05: 工厂方法模式
    1. 案例:加减乘除运算2.工厂方法模式结构 - 抽象工厂(AbstractFactory):所有生产具体产品的工厂类的基类,提供工厂类的公共方法template<typenameT>classOperationFactory{public:virtualstd::shared_ptr<Operation<T>>CreatOperation()=0;};-具体工......
  • Day15 二叉树part05| LeetCode 654.最大二叉树,617.合并二叉树 ,700.二叉搜索树中的搜索
    654.最大二叉树654.最大二叉树classSolution{publicTreeNodeconstructMaximumBinaryTree(int[]nums){if(nums.length==1)//遍历到了叶子节点{returnnewTreeNode(nums[0]);}intmaxValue=nums[0......
  • MySQL篇(高级字符串函数/正则表达式)(持续更新迭代)
    目录讲点一:高级字符串函数一、简介二、常见字符串函数1.CONCAT()2.SUBSTRING()3.LENGTH()4.REPLACE()5.TRIM()6.UPPER()7.LOWER()8.LEFT()9.RIGHT()10.INSTR()11.LENTH(str)讲点二:正则表达式一、简介二、语法1.字符类2.重复次数3.通配符4.......
  • 【GESP】C++一级练习BCQM3005,基本输出语句printf
    一道基础练习题,练习基本输出语句printf。BCQM3005题目要求描述输出表达式1234∗5678的结果。输入无输出1234∗5678=7006652输入样例无输出样例1234*5678=7006652全文详见个人独立博客:https://www.coderli.com/gesp-1-bcqm3005/【GESP】C++一级练习B......
  • 读构建可扩展分布式系统:方法与实践05分布式缓存
    1. 分布式缓存1.1. 缓存存在于应用程序的许多地方1.1.1. 行应用程序的CPU具有高速多级硬件缓存,可以减少相对较慢的主内存访问1.1.2. 数据库引擎可以利用主内存来缓存数据存储的内容,这样在许多情况下查询就可以不用访问速度相对较慢的磁盘1.2. 分布式缓存是可扩展......
  • 企业网络项目调试系列-05核心网安全 DHCP SERVER与DHCP SNOOPING配置
    整体拓扑背景:生产环境中,最基础的网络安全配置就是DHCP动态IP获取的问题,由于个人家用路由器价格便宜,很多用户为了自身上网方便,在办公室的内网接入线路桥接一个家用路由,但是这种路由器的内网口配置自动开启DHCP功能,如果将有线网接入线路,接到了家用路由设备的内网口(LAN)口,则会......
  • AGC005D ~K Perm Counting 题解
    [AGC005D]~KPermCounting题解如果一个排列\(P\)满足对于所有的\(i\)都有\(|P_i-i|\neqk\),则称排列\(P\)为合法的。现给出\(n\)和\(k\),求有多少种合法的排列。由于答案很大,请输出答案对\(924844033\)取模的结果。\(2\leqn\leq2\times10^3\),\(1\leqk\leqn......
  • leetcode438.找到字符串中所有字母异位词、leetcode3.无重复字符的最长子串、leetcode
    leetcode438、找到字符串中所有字母异位词给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。示例1:输入:s=“cbaebabacd”,p=“abc”输出:[0,6]......
  • 【题解】【数组】—— [NOIP2005 普及组] 校门外的树
    【题解】【数组】——[NOIP2005普及组]校门外的树[NOIP2005普及组]校门外的树题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析2.AC代码[NOIP2005普及组]校门外的树通往洛谷的传送门题目描述某校大门外长度为......