首页 > 编程语言 >疯狂Python讲义学习笔记——第2章变量和简单类型2.4字符串入门

疯狂Python讲义学习笔记——第2章变量和简单类型2.4字符串入门

时间:2024-04-05 20:05:03浏览次数:30  
标签:Python 代码 bytes 如下 print 字符串 讲义 2.4

思维导图

  

        字符串的意思是“一串字符”,比如"Hello, Python"是一个字符串,"How do you do?"也是一个字符串。Python要求字符串必须使用引号括起来,可使用单引号或双引号,只要两边的引号能配对即可。

4.1 字符串和转义字符

        字符串的内容几乎可以包含任何字符,英文字符也行,中文字符也行。

        字符串既可以用单引号括起来,也可以用双引号括起来,这没有任何区别。例如如下代码。

str1 = 'JJ Lin'
str2 = "民哥聊编程"
print(str1)
print(str2)

        运行上面的代码,输出如下。

        如果字符串内容本身包含了单引号或双引号,可以用以下两种方式进行特殊处理。

  • 使用不同的引号将字符串括起来。
  • 对引号进行转义。

        对于第一种处理方式,如果字符串内容中包含了单引号,则可以用双引号将字符串括起来。例如:

str3 = 'I'm a student'

        在Python交互式解释器运行上面的代码,可以看到如下,输出语法错误。

        由于上面的字符串包含了单引号,此时Python会将字符串中的单引号与第一个单引号配对,这样就会把'I'当成字符串,而后面的m a student'就变成了多余的内容,从而导致语法错误。

        为了避免这种问题,可以将上面的代码改为如下形式。

str3 = "I'm a student"

        在Python交互式解释器运行上面的代码,可以看到如下,解释器编译通过。

        上面代码使用双引号将字符串括起来,此时Python就会把字符串中的单引号当成字符串内容,而不是和字符串开始的引号配对。

        如果字符串内容本身包含双引号,则可以使用单引号将字符串括起来,例如如下代码。

str4 = 'The priest said, "God bless you."'

        在Python交互式解释器运行上面的代码,可以看到如下输出。

        第二种处理方式:使用转义字符。Python允许使用反斜线(\)将字符串中的特殊字符进行转义。如果字符串既包含单引号,又包含双引号,就必须使用转义字符,例如如下代码。

str5 = '"Well, let\'s begin our class.", says the teacher'

        在Python交互式解释器运行上面的代码,可以看到如下输出。

4.2 拼接字符串

        Python使用加号(+)作为字符串的拼接运算符,例如如下代码。

s1 = "Python "
s2 = "is Funny"
# 使用+拼接字符串
s3 = s1 + s2
print(s3)

        在Python交互式解释器运行上面的代码,可以看到如下输出。

4.3 repr和字符串

        Python不允许直接拼接数值和字符串,需将数值转换成字符串后才能进行拼接。可以使用str()或repr()函数,将数值转换成字符串。例如如下代码。

s1 = "这本书的价格是:"
p = 68.9
# 字符串直接拼接数值,程序报错
print(s1 + p)
# 使用str()将数值转换成字符串
print(s1 + str(p))
# 使用repr()将数值转换成字符串
print(s1 + repr(p))

        在Python交互式解释器运行上面的代码,可以看到如下输出。

        str本身是Python的内置类型(和int、float一样),而repr()则只是一个函数。repr()会以Python表达式的形式来表示值,例如如下代码。

st = "I'm a coder"
print(st)
print(repr(st))

        在Python交互式解释器运行上面的代码,可以看到如下输出。

        上面的输出结果可以看出,直接使用print()函数输出字符串时,只能看到字符串的内容,没有引号;但先使用repr()函数对字符串进行处理,再使用print()执行输出,可以看到带引号的字符串——这就是字符串的Python表达式形式。

4.4 使用input获取用户输入

        input()函数用于向用户生成一条提示,然后获取用户输入的内容。用户可以输入任何内容,input()函数总是返回一个字符串。例如如下代码。

msg = input("请输入你的值:")
print(type(msg))
print(msg)

        第一次运行该程序,输入一个整数,运行过程如下:

PS:Sublime text如何调试input函数,可点击此链接学习。

        第二次运行该程序,输入一个浮点数,运行过程如下:

        第三次运行该程序,输入一个字符串,运行过程如下:

        从上面的运行过程可以看出,无论输入哪种内容,始终可以看到input()函数返回字符串,程序总会将用户输入的内容转换成字符串。

4.5 长字符串

        Python多行注释提到的使用三个引号(单引号或双引号)来包含多行注释内容,这是长字符串的写法。当定义的长字符串没有赋值给任何变量,那么这个字符串相当于被解释器忽略了,也就相当于注释掉了。长字符串也可以赋值给变量,例如如下代码。

s = '''"Let's go fishing", said Ben.
"OK, Let's go", said her borther.
They walked to a lake'''
print(s)

        运行上面的代码,输出如下。

        当程序中有大段文本内容要定义成字符串时,优先推荐使用长字符串形式。这种形式可以让字符串包含任何内容,既可包含单引号,也可以包含双引号。

4.6 原始字符串

        由于字符串中的反斜线都有特殊的作用,因此当字符串中包含反斜线时,就需要对其进行转义。

        比如写一条Windows的路径:D:\python\codes\02\2.4,如果在Python程序中直接这样写肯定是不行的,需要写成:D:\\python\\codes\\02\\2.4,这样会让人觉得很麻烦,这时可借助原始字符串来解决这个问题。

        原始字符串以”r“开头,原始字符串不会把反斜线当成特殊字符。因此,上面的Windows路径可直接写成r'D:\python\codes\02\2.4'。例如如下代码。

s1 = r'D:\python\codes\02\2.4'
print(s1)

        在Python交互式解释器运行上面的代码,可以看到如下输出。

        如果原始字符串中包含引号,程序同样需要对引号进行转义(否则Python同样无法对字符串的引号精确配对),但此时用于转义的反斜线会变成字符串的一部分。例如如下代码。

# 原始字符串包含的引号,同样需要转义
s2 = r'"Let\'s go", said JJ Lin'
print(s2)

        在Python交互式解释器运行上面的代码,可以看到如下输出。

4.7 字节串(bytes)

        字符串(str)由多个字符组成,字符为单位进行操作;字节串(bytes)由多个字节组成,以字节为单位进行操作。

        bytes和str除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes也是不可变序列。

        bytes对象只负责以字节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。如果采用合适的字符集,字符串可以转换成字节串;反过来,字节串也可以恢复成对应的字符串。

        bytes保存的就是原始的字节(二进制格式)数据,因此bytes对象可用于在网络上传输数据 ,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。

        将一个字符串转换成bytes对象有如下三种方式。

  • 如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加b来构建字节串值
  • 调用 bytes()函数(其实是 bytes 构造方法)将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。
  • 调用字符串本身的encode()方法将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。

        例如,如下代码示范了如何创建字节串。

# 创建一个空的bytes对象
b1 = bytes()
# 创建一个空的bytes值
b2 = b''
# 通过b前缀指定python是bytes类型的值
b3 = b'python'
print(b3)
print(b3[0])
print(b3[2:4])
# 调用bytes方法将字符串转换成bytes对象
b4 = bytes('我爱Python编程', encoding='utf-8')
print(b4)
# 利用字符串的encode()方法编码成bytes,默认使用UTF-8字符集
b5 = "学习Python使工作变得高效".encode('utf-8')
print(b5)

        上面代码中b1~b5都是字节串对象,该代码示范了以不同方式来构建字节串对象。其中b2、b3是直接在ASCII字符串前添加b前缀来得到字节串的;b4调用 bytes()函数来构建字节串;而b5则调用字符串的encode()方法来构建字节串。

        运行上面的代码,输出如下。

作者Info

【微信号】:luckweimin
【微信公众号】:民哥聊编程。欢迎大家关注~
【B站】:民哥聊编程(https://space.bilibili.com/620580007)

【CSDN】:https://blog.csdn.net/u013092707?type=blog

标签:Python,代码,bytes,如下,print,字符串,讲义,2.4
From: https://blog.csdn.net/u013092707/article/details/137407468

相关文章

  • LeetCode in Python 300. Longest Increasing Subsequence (最长递增子序列)
    求最长递增子序列是深度优先搜索(DFS)的一种应用,有两种比较好的方法可以解决。第一种是动态规划法,时间复杂度为O(n*n),即设置边界条件和更新迭代公式求解最优解。第二种使用二分查找将时间复杂度降为O(nlogn)。本文给出两种方法的实现代码及说明。示例:图1最长递增子序列输入......
  • Python环境下基于离散小波变换的信号降噪方法
    Mallat创造了小波分析中的经典理论之一,即多分辨率分析的概念。后来,在Mallat与Meyer的共同努力之下,他们又在这一理论的基础上发明了离散小波变换的快速算法,这就是Mallat塔式算法,这种算法可以大量减少计算时间。在之前的二十年之间,小波分析方法在自身不断发展壮大的同时,也被许多......
  • 在Python中用concurrent.futures创建线程池进程池
    简介Python3.2带来了concurrent.futures模块,借此能够快速使用线程池和进程池。对于不需要控制优先级与资源分配的多任务,使用concurrent.futures模块快捷优雅。示例代码与效果importconcurrent.futuresimporttimedefa_task(x):"""模拟一个耗时的任务"""de......
  • Python程序设计 魔法函数
    1.魔法方法Python中有一些特殊方法,它们允许我们的类和Python更好地集成。在标准库参考(StandardLibraryReference)中,它们被称为魔法方法(MagicMethods),是与Python的其他特性无缝集成的基础。例如,我们用字符串来表示一个对象的值。Object 基类包含了__repr__() 和__str__()......
  • Python程序设计 垃圾回收机制&鸭子类型
    1.简介引用计数(python默认):记录该对象当前被引用的次数,每当新的引用指向该对象时,它的引用计数ob_ref加1,每当该对象的引用失效时计数ob_ref减1,一旦对象的引用计数为0,该对象立即被回收标记清除:第一段给所有活动对象标记,第二段清除非活动对象分代回收:python将内存根据对象的存......
  • Python|梯度下降法
    全量梯度下降importnumpyasnp#创建数据集X,ynp.random.seed(1)X=np.random.rand(100,1)y=4+3*X+np.random.randn(100,1)X_b=np.c_[np.ones((100,1)),X]#创建超参数n_iterations=10000t0,t1=5,500#定义一个函数来动态调整学习率defl......
  • 小白学python爬虫1
    """爬虫:通过编写程序来获取互联网上的资源需求:用程序模拟浏览器,输入一个网址,从该网址获取到资源或者内容"""#fromurllib.requestimporturlopen#url网址##url="http://www.baidu.com"#resp=urlopen(url)###print(resp.read().decode("utf-8"))......
  • Python栈和队列
    在计算机科学中,栈(Stack)和队列(Queue)是两种非常重要的数据结构,它们在算法设计和程序开发中扮演着关键角色。Python语言内置了对这两种数据结构的支持,尤其是在其`collections`和`deque`模块中。###栈(Stack)栈是一种后进先出(LastInFirstOut,LIFO)的数据结构,它只允许在一端进行......
  • Python简单函数循环综合实例
    importrandomprint("*"*71)print("*"*27+"欢迎来到名人猜猜猜"+"*"*27)print("*"*29+"Let'sbegining"+"*"*28)character_1='他是巨星'character_2='他是篮球健将'character_3='他身......
  • Python递归调用应用实例-汉诺塔
    递归介绍1.简单的说:递归就是函数自己调用自己,每次调用时传入不同的值2.递归有助于编程者解决复杂问题,同时可以让代码变得简洁汉诺塔传说汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石住子,在一根柱子上从上往下按照大小顺......