首页 > 编程语言 >【Python从入门到精通】字符串详解

【Python从入门到精通】字符串详解

时间:2024-03-20 21:32:15浏览次数:34  
标签:入门 Python name 字符串 详解 str print my string

Python不难学只要肯用心。 

 【Python从入门到精通】专栏课程:

1、【Python从入门到精通】认识Python

2、【Python从入门到精通】变量&数据类型

3、【Python从入门到精通】列表&元组&字典&集合

4、【Python从入门到精通】运算符&控制语句

5、【Python从入门到精通】异常详解

6、【Python从入门到精通】函数详解

 一、字符串使用

在Python中,字符串是由n个(n>=0)字符组成的有序序列,它可以通过英文单引号('')或者英文双引号去创建。

下面我们将通过多种方式来创建字符串。

1.1 创建方式一

my_str = 'hello world'
print(my_str)
# 查看类型
print(type(my_str))
# 查看字符个数
print(len(my_str))

 1.2 创建方式二

my_str = "hello world"
print(my_str)
# 查看类型
print(type(my_str))
# 查看字符个数
print(len(my_str))

这两种方式定义字符串是等效的,你可以根据个人喜好选择其中一种。这里的字符串可以包含任何字符,包括字母、数字、空格、标点符号等。

如果字符串本身包含引号字符,可以在字符串内使用不同类型的引号进行定义,或者使用转义字符 \ 来表示引号。

补充:转义字符

在Python中,转义字符是以反斜线(\)开头的字符,可用于表示特殊字符或具有特殊含义的字符,例如n只是表示一个英文字母,若我们加上转义字符即\n那么此时就表示换行。常见的转义字符如下所示:

  • \n:换行符
  • \t:制表符
  • \\:表示一个反斜线
  • \": 表示双引号
  • \': 表示单引号
  • \r:回车,将光标移到行首
print('hello nTom')
print('-----------------')
print('hello \nTom')

通过使用转义字符,我们可以在字符串中插入特殊字符或避免字符的歧义,使字符串的表达更为灵活和准确。 

 1.3 创建方式三

在Python中还有一个比较特殊的用法那就是 多行注释可以用于充当字符串。

my_str = '''
我是一个多行注释字符串
'''
print(my_str)
# 查看类型
print(type(my_str))
# 查看字符个数
print(len(my_str))

二、切片

在Python中,切片是一种从可迭代对象(如字符串、列表、元组等)中获取子序列的操作。

在前面的列表教程中我们没有去讲解切片的知识点,这里我们将切片知识点放于字符串中进行讲解。

序列对象[start:end:step]

 所谓的切片就是在序列对象中[start,end)的一个左闭右开的一个区间范围内按照按照指定的step步长去获取元素,并将获取得到的元素放置于新的列表中返回。

在上述切片语法中:start的默认值是0,end的默认值是len(序列对象)-1,step的默认值为1。

下面我们将通过案例逐步的去了解切片的知识点。

my_str = "在Python中,切片是一种从可迭代对象(如字符串、列表、元组等)中获取子序列的操作。"
# start和step使用默认值
section_list1 = my_str[:6]
print(section_list1)

my_str = "在Python中,切片是一种从可迭代对象(如字符串、列表、元组等)中获取子序列的操作。"
# step和end使用默认值
section_list1 = my_str[2:]
print(section_list1)

my_str = "在Python中,切片是一种从可迭代对象(如字符串、列表、元组等)中获取子序列的操作。"
# start和end使用默认值
section_list1 = my_str[::2]
print(section_list1)

my_str = "在Python中,切片是一种从可迭代对象(如字符串、列表、元组等)中获取子序列的操作。"
# 都使用默认值
section_list1 = my_str[::]
print(section_list1)

my_str = "在Python中,切片是一种从可迭代对象(如字符串、列表、元组等)中获取子序列的操作。"
# start和end使用负数
section_list1 = my_str[-12:-2:]
print(section_list1)

注意:切片操作中若start和end使用的是正数则表示start和end的范围是从前往后数,若为负数则表示从后往前数。

my_str = "在Python中,切片是一种从可迭代对象(如字符串、列表、元组等)中获取子序列的操作。"
# 都不使用默认值
section_list1 = my_str[1:-2:3]
print(section_list1)

三、API使用

 在Python中,字符串是不可变类型的对象,它具有许多内置的方法和函数来进行字符串的操作和处理。

3.1 len()

该函数可以用于获取序列的元素个数,那么用在字符串身上就是用于获取字符串中字符个数。

my_string = "Hello, World!"
length = len(my_string)
print(length) 

3.2  upper()&lower()

这两个方法可以实现字符串转换为全大写或全小写。

my_string = "Hello, World!"
uppercase_string = my_string.upper()
lowercase_string = my_string.lower()
print(uppercase_string)
print(lowercase_string)

3.3 find()& index()

这两个方法可以实现查找子字符串在原始字符串中的位置。 

my_string = "Hello, World!"
index = my_string.find("World")
print(index)
index = my_string.index("World")
print(index)

 在Python中,find()index()是用于查找子字符串在原始字符串中的位置的方法,但它们之间有一些区别。

  • 返回值: find()方法返回子字符串在原始字符串中第一次出现的索引值,如果子字符串不存在,则返回-1。而index()方法也返回子字符串在原始字符串中第一次出现的索引值,但如果子字符串不存在,会抛出ValueError异常。
  • 错误处理: find()方法在子字符串不存在时,返回-1作为指示,不会引发任何异常。相反,index()方法在子字符串不存在时,会引发ValueError异常。因此,在使用index()方法时,需要注意处理异常。
  • 用法上的差异:find()方法是字符串对象的方法,可以直接调用。而index()方法既可以作为字符串对象的方法调用,也可以作为str类的静态方法调用,传入字符串作为第一个参数。
my_string = "Hello, World!"

# 使用find()方法
index1 = my_string.find("World")
print(index1)
index2 = my_string.find("Python")
print(index2)

# 使用index()方法
index3 = my_string.index("World")
print(index3)
index4 = my_string.index("Java")
print(index4)

 3.4 replace()

在Python中该方法可以用来替换字符串中的特定子字符串。

my_string = "Hello, World!"
new_string = my_string.replace("Hello", "Hi")
print(new_string) 

3.5 split()

 Python可以通过该方法按照指定条件去分割字符串,并且将符合条件的字符串存于列表中返回。

my_string = "Hello, World!"
new_string = my_string.split(",")
print(new_string)

注意:对于替换和分割我们可以结合正则表达式来使用,对于正则表达式的使用将在下一期的教程中讲解。

 3.6 join()

该方法用于将可迭代对象中的元素以指定的字符串作为分隔符连接起来,生成一个新的字符串。

separator = "<separator_string>"
joined_string = separator.join(iterable)

 在上述语法中separator_string是作为分隔符的字符串,iterable是可迭代对象,例如列表、元组或字符串列表等。

# 使用join()方法将元组中的字符串连接起来
my_tuple = ("Python", "is", "awesome!")
joined_string = "-".join(my_tuple)
print(joined_string)
print('---------------')

# 使用join()方法将字符串列表连接起来
my_string_list = ["This", "is", "a", "sentence."]
joined_string = " ".join(my_string_list)
print(joined_string)
print('---------------')

# 使用join()方法将字符串连接起来
my_string = "Hello, World!"
joined_string = "-".join(my_string)
print(joined_string)

3.7 startWidth()&endWidth()

这两个方法用于检查字符串是否以指定的子字符串开头或者结尾,返回值为布尔值,若返回True则表示字符串确实是以子字符串作为开头或者结尾。

my_string = "Hello, World!"
result = my_string.startswith("Hello")
print(result)
print('-------------------------')
result = my_string.startswith("World")
print(result)
print('-------------------------')
result = my_string.startswith("Hello", 2)
print(result)
print('-------------------------')
result = my_string.startswith("Hello", 0, 5)
print(result)
print('-------------------------')
result = my_string.endswith("Hello")
print(result)
print('------------------------')
result = my_string.endswith("hello")
print(result)

当然Python中的字符串对象提供的方法还有很多,但是这里就不一一列举。

四、字符串格式化 

我们在开发程序的时候可能会遇到一些将字符串和Python表达式混合使用的场景,当然我们可以直直接使用”+“进行字符串拼接也是可以的。

my_str1 = "我是"
my_str2 = ",今年"
my_str3 = "岁了。"
my_str4 = my_str1  + '张三' + my_str2  + str(29) + my_str3
print(my_str4)

 上述的场景虽说可以使用字符串拼接的方式来完成,但是这样做还是比较麻烦的,对此我们可以使用字符串格式化操作来完成。

在Python中,字符串格式化是指将变量或值插入到字符串中的特定位置,以便形成最终的字符串。Python提供了多种方式来进行字符串格式化。

4. 1 占位符

我们可以通过使用占位符(如%s%d)作为格式化标记,然后使用元组或字典提供对应的值。

name = "张三"
age = 29
my_str = "我是%s,今年%d岁了。"%(name,age)
print(my_str)

在上述代码中%s表示字符串占位符,%d则表示整数占位符 ,如果我们要使用浮点数,那么我们可以使用%f作为占位符。

name = "张三"
age = 29
my_str = "我是%s,今年%f岁了。"%(name,age)
print(my_str)

当然我们在进行字符串格式化时还可以控制精度和填充方式,所谓的精度我们可以理解为在字符串中指定为空出多个个字符位置用于字符串格式化,而填充方式则是指当精度高于格式化的字符数量那么使用什么字符去填充剩下的空位置。

name = "张三"
age = 29
# 控制精度
my_str = "我是%6s,今年%d岁了。"%(name,age)
print(my_str)
print('-----------------------')
# 控制填充格式
my_str = "我是%6s,今年%07d岁了。"%(name,age)
print(my_str)
print('------------------------')
my_str = "我是%-6s,今年%d岁了。"%(name,age)
print(my_str)

 在上述代码中第一个输出name所对应的位置那里字段宽度设置为了6,由于name的长度小于6,所以默认使用空格进行填充;第二个输出中在age所对应的位置那里设置字段宽度为7,而age长度是2,对此剩下的5个空格使用指定的0进行填充;滴三个输出则是age对应的字段那里字段宽度设置为6,由于name长度只有2,对此使用空格填充,但是“-”却改变了对齐方式,也就是说将name字段所在位置由原来的右对齐改为左对齐。

4.2 format()

这是一种更灵活和推荐的字符串格式化方法。在字符串中使用占位符 {},并通过format()方法提供对应的值。

name = "张三"
age = 29
# key-value的形式一一对应
my_str = "我是{name},今年{age}岁了。".format(name=name, age=age)
print(my_str)
print('---------------------------')
# 索引index的形式进行对应
my_str = "我是{0},今年{1}岁了。".format(name,age)
print(my_str)
print('---------------------------')
# 索引和key-value混合着使用
my_str = "我是{name},今年{0}岁了。".format(age,name=name)
print(my_str)

 当然format也可以用于指定精度和填充方式。

首先我们来看format对应精度的指定。

name = "张三"
age = 29
# 指定精度
my_str = "我是{name:4},今年{age}岁了。".format(name=name, age=age)
print(my_str)

在上述代码中name字段后面的花括号4指的是在该字段位置将字段宽度设置为4。

接着我们再来看一下format对于填充方式的处理。

name = "张三"
age = 29
# 指定精度
my_str = "我是{name:a^6},今年{age}岁了。".format(name=name, age=age)
print(my_str)

在上述代码中6表示字段宽度,“^”表示居中对齐(这个位置用于规定字段的对齐方式),a则表示填充方式(这个位置用于规定填充空格的字符)。

我们在设置字段的对齐方式时可以以下选择:

  • ^:居中对齐
  • <:左对齐
  • >:右对齐 
name = "张三"
age = 29
# 指定精度
my_str = "我是{name:k>6},今年{age}岁了。".format(name=name, age=age)
print(my_str)

 4.3 f-string

这是一种新的字符串格式化语法,用于Python 3.6及更高版本。它使用以f开头的字符串,并使用花括号 {} 插入变量或表达式。

name = "张三"
age = 29
# 指定精度
my_str = f"我是{name:k>6},今年{age}岁了。"
print(my_str)

f-string提供了一种简洁、直观的方式来格式化字符串,特别适合格式化复杂的表达式或多个变量。

本期教程就到这里为止了,对于正则化将在后面的教程中进行讲解。

 

标签:入门,Python,name,字符串,详解,str,print,my,string
From: https://blog.csdn.net/diamond_5446/article/details/136836079

相关文章

  • 基于python+django+Spark的动漫推荐可视化分析系统
    摘 要近年来,随着互联网的蓬勃发展,企事业单位对信息的管理提出了更高的要求。以传统的管理方式已无法满足现代人们的需求。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,随着各行业的不断发展,基于Spark的国漫推荐系统的建设也逐渐进入了信息化的进程。这个系统......
  • python练习3——数据容器
    Python中的数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。数据容器根据特点的不同,如:是否支持重复元素是否可以修改是否有序,等分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(se......
  • python requests.post Max retries exceeded with url 报错
    python requests.post  Maxretriesexceededwithurl 报错 importrequestsfromrequests.adaptersimportHTTPAdapterfromrequests.packages.urllib3.util.retryimportRetrysession=requests.Session()retries=Retry(total=5,backoff_factor=0.1,st......
  • 树套树从入门到去世
    如何实现数据结构的嵌套?首先我们知道,单个数据结构是对一些存有某些信息的节点进行操作,从而达到目的。然后我们将这些节点换成另一种数据结构,更改的时候对某些数据结构进行修改,就可以实现嵌套。二维树状数组其实是最好写的一种树套树。单点修改,区间查询就像上文说的一样,我们......
  • C语言的指针详解
    一、指针的定义及使用1.指针是什么?指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以......
  • 爬虫入门系列-HTML基础语法
    ......
  • Java中String类型的创建与比较(详解)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、String类型是什么??二、String类型的创建使用字符串字面量使用new关键字intern()方法简读图解String的比较总结前言提示:这里可以添加本文要记录的大概内容:在背八股文(Holis版)的过程中遇......
  • BUU之misc入门
    BUU之misc题目你竟然赶我走给了个附件,就是这个表情包。。010打开,Ctrl+F搜flag直接秒了flagISflag{stego_is_s0_bor1ing}题目来首歌吧打开附件是一首歌,魔性小猫,听着听着发现有摩斯电码的声音,打开Audacity看看发现音频分了左右声道对应----.题目金2+1胖附件......
  • 贪心算法详解
    贪心1建立数学模型来描述问题2把求解的问题分成若干个子问题3对每一个子问题求解,得到子问题的局部最优解4把子问题的解局部最优解合成原来解问题的一个解总结:局部最优做到全局最优。例题实战1在很久以前,有n个部落居住在平原上,依次编号为1到n,第i个部落的人数为ti,......
  • NOJ南邮上机 矩阵变换问题 PROB1020 Python
    PROB1020   矩阵变换问题描述:给定一个 n×m的矩阵,对于 初始矩阵 中所有值为 1 的元素,重置其 所在行列 的所有元素为 0,最后输出整个修改后的矩阵。输入:输入共包含 1+n行。第一行包两个整数 n 和 m,分别表示矩阵的长和宽,题目保证 2≤n,m≤700且 4≤n×m......