Python-----Strings字符串

Python教程正在更新中:
查看Python教程目录

字符串,在维基百科中的定义如下:

字符串(String),是由零个或多个字符组成的有限串行。一般记为 s=a[1]a[2]…a[n]。

根据这个定义,很清楚的了解到Hello World就是一个字符串,不论是那种字符,都可以认为是字符串,包括一个空格,一个emojie等等。
严格的来讲,Python中的字符串是一种对象类型,这种类型用str表示,通常采用单引号 ’ XXX ’ ,或双引号 " XXX " 包起来。
对于一句话:Python Course for Beginners我们就可以用如下两种方式表示:

course = 'Python Course for Beginners'
course = "Python Course for Beginners"

在这种条件下,两种表示方式都能比较好的表示这个字符串。
但是对于:Python’s Course for Beginners这个字符串使用双引号包裹字符串可以正常运行如下:

course = "Python's Course for Beginners"

如果用单引号呢:

course = 'Python's Course for Beginners'

运行发现:
在这里插入图片描述
报错了。对于单引号前后需要匹配但是在这句话中单引号出现了三次,程序已经将前两个单引号进行匹配,并不清楚第三个单引号的作用是什么,于是程序报错了,如何解决这个问题呢,有如下两种方法:
方案1:

course = "Python's Course for Beginners"

使用双引号,既然之前使用双引号可以解决问题,那么为什么不直接使用双引号呢。
方案2:

course = 'Python\'s Course for Beginners'

使用转义字符 \ ,转义字符的意义就是不让某个符号表示一种含义而是让这个字符表现另一种含义,转义字符的作用就是能够转变符号的含义。使用了转义字符后,这个字符就是去了他的特殊含义,就变成了单纯的字符形式/

那么如果我想输入一封信的格式呢,如果用多个变量,是不是有点浪费空间呢,同样Python可以使用如下形式

course = '''
Hi John

Here is our first email to you 

Thank you,
The support team
'''
print(course)

之后

变量无类型,对象有类型*
例如对于代码

a = 5

本质相当于变量 a 附在了对象 5 上面,这个语句被称为赋值语句
同样,对于字符串类型的对象,也是这样,同样能使用赋值语句将对象和变量联系起来

char = "Hello Wrold"

同样,我们还可以用type模块检测变量的类型

char = "Hello Wrold"
print(type(char))

得到结果如下:
在这里插入图片描述
我们之前介绍过拼接字符串,我们现在正式介绍以下字符串的拼接
之前我们介绍的字符串的拼接如下,就是将两个字符串用加法的形式连接起来

print('Py' + 'thon')

得到的输出结果是:Python很显然

同时字符串也可以乘以数字,如下

print('Python' * 5)

输出得到的结果如图
在这里插入图片描述
就是将字符串输出n次,但是对于字符串的减法等等是没有意义的,同时程序也会报错。

如果我们需要输出python3.7呢
试试如下代码?

a = 3.7
b = "Python"
print(a + b)

发现运行后报错了
在这里插入图片描述
显示数字和字符串不能连接,用 ’ + ‘ 连接起来的两个类型必须是同一类型
推荐使用如下几种方式实现:
1.强制类型转换

a = 'Python'
b = 3.7
print(a + str(b))

将数字转换成字符串的函数 str()
2.repr() 函数

a = 'Python'
b = 3.7
print(a + repr(b))

这个函数相当于转义字符,将b转换为合法的Python表达式。
同样在字符串连接的时候Python还为我们提供了另一种输出的方式:

first = 'Lpy'
last = '_Now'
msg = f'{first}[{last}] is a coder'
print(msg)

对于两个变量我们可以用如上的格式进行连接,f开头,后面用单引号,大括号内的内容是定义的变量,其他是字符串。

具体repr()和str()两个函数的区别可以在谷歌查找。
网站中找到的英文结果如下,稍后有时间会翻译出来

  1. When should i use str() and when should i use repr() ?
    Almost always use str when creating output for end users.
    repr is mainly useful for debugging and exploring. For example, if you suspect a string has non printi
    ng characters in it, or a float has a small rounding error, repr will show you; str may not.
    repr can also be useful for for generating literals to paste into your source code. It can also be used f
    or persistence (with ast.literal_eval or eval), but this is rarely a good idea–if you want editable persi
    sted values, something like JSON or YAML is much better, and if you don’t plan to edit them, use pic
    kle.
    2.In which cases i can use either of them ?
    Well, you can use them almost anywhere. You shouldn’t generally use them except as described ab
    ove.
    3.What can str() do which repr() can’t ?
    Give you output fit for end-user consumption–not always (e.g., str([‘spam’, ‘eggs’]) isn’t likely to be
    anything you want to put in a GUI), but more often than repr.
    4.What can repr() do which str() can’t
    Give you output that’s useful for debugging–again, not always (the default for instances of user-cr
    eated classes is rarely helpful), but whenever possible.
    And sometimes give you output that’s a valid Python literal or other expression–but you rarely want
    to rely on that except for interactive exploration.

Python的转义字符
在字符串输入的过程中,通常需要输入一些特殊的符号,这些时候就需要使用转义字符,之前介绍过转义字符的意义,就是不表示符号本身的意义,而是表示符号的另一重含义,如下列出常用的转义字符

转义字符作用描述
\(在行尾时) 续行符
\反斜杠符号
单引号
"双引号
\a响铃
\b退格(Backspace)
\e转义
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数,yy 代表的字符,例如:\o12 代表换行(ASCII)
\xyy十六进制数,yy 代表的字符,例如:\x0a 代表换行(ASCII)
other其它的字符以普通格式输出

个人感觉转义字符用的不多,大家可以自己下去尝试,这里不占篇幅挨个尝试了。

Python String Methods Python的方法/函数
之前说过Python中有很多轮子,这些轮子/模块大大节省了我们编程的时间和精力,但是学了这么多,我们还没体会到这些的好处,接下来我们用一些常见的函数来介绍下Python中用于string(字符串)的函数
比如对于如下的字符串:Python for Beginners
我们有很多函数供操作,我们在这里只举一些很常见的栗子,更多的大家可以谷歌,请仔细观察函数是如何调用的,不同的函数调用方式也不尽相同
len()

print(len(course))

运行后输出的是字符串的长度20,这里是每一个字符都算一个单位的长度,当然空格也不例外,这个len函数就可以求出字符串的长度
upper()

print(course.upper())

upper()函数是将字符串内的所有字符都转换为大写运行这个函数的输出结果是PYTHON FOR BEGINNERS,可以发现这个函数将所有小写字母全部转化为大写字母进行输出了。
lower()

print(course.lower())

lower()函数是将字符串中所有字母都转换为小写并输出,得到的结果如下:python for beginners
同样还有如下函数:
capitalize() 首字母大写
isupper() 判断字符串中的字母是否全是大写
islower() 判断字符串中的字母是否全是小写
等等
find()

print(course.find('P'))

find(’ X ')函数是在字符串中寻找这个字母,并返回这个字母的位置,我们可以将字符串视为很多字符组成的,第一个字符的编号为0以此类推,并且find函数在寻找时区分大小写,如果找到返回找到的第一个字符的位置,如果没有则返回0。同理这个函数同样可以找一个字符串的位置,如下;

print(course.find('Beginners'))

找到则返回这个字符串在原字符串第一个字母的首位置,否咋则返回-1
in

print('Python' in course)
print('python' in course)

in函数返回的时这个字符或者字符串在这个字符串中是否存在,并区分大小写,存在返回True不存在则返回False
上面代码第一个返回True,第二个返回False
replace()

print(course.replace('Beginners', 'Absolute Beginners'))
print(course.replace('P', 'J'))

replace(‘A’,‘B’)函数可以将字符串中的A字符或者字符串替换为B字符或者字符串,运行上述代码后,输出结果为

Python for Absolute Beginners
Jython for Beginners

max()

print(max(course))

max()函数返回字符串中ASCII最大的哪个字符,计算机中的字符时按ASCII编码的,具体ASCII编码可以在谷歌查得到。
cmp()
cmp(string1, string2)是将两个字符串中的字符挨个进行比较,如果返回的数值小于0,说明string1小于string2;如果返回数值等于0,说明string1等于string2;如果返回数值大于0,说明string1大于string2
更多关于Python的函数可以区谷歌学习,这里不再过多介绍。

字符串
讲了这么多字符串,其实我们可以将字符串视为一个个小格子,每一个格子里都只装有一个字符,就像每一个房间只能住一个人一样,并且每个房间都有自己的编号,这样我们查询每一个字符就可以很方便的查询了。从零开始,对于字符串:"Python for Beginners"对应关系如下:
在这里插入图片描述
如何访问一个固定的字符呢,可以按照数字对应关系:

course = 'Python for Beginners'
print(course[0])

这样就可以输出这个字符串中第一个字符了
第几个就对应第几个字符。
此时我们探究了从0开字符串中的字符,那么数字如果是负数呢
我们可以尝试一下:

course = 'Python for Beginners'
print(course[-1])
print(course[-2])

此时输出结果为,s和r,这样就是从字符串末尾开始倒着数的位数,对应关系如下:
在这里插入图片描述
如果访问的数字超出了范围呢,程序就会报错,因为在这个字符串中是不存在这个格子的。

如果我们需要访问一段区间内的字符呢

course = 'Python for Beginners'
print(course[0:3])
print(course[1:])
print(course[:5])
print(course[:])

观察输出

Pyt
ython for Beginners
Pytho
Python for Beginners

观察输出我们发现如果需要访问一段区间内的字符,可以用上面的几种方式访问
第二行是从0到3的字符,并且都是左闭右开,也就是[0,3)区域内的字符(下同)
第三行是访问从1到字符串结尾的字符,第四行是访问从字符串开头到4的字符,如果冒号前后不填写数字的话,程序默认是到开头或者结尾
第五行是访问整个字符串。
那么对于下面这行代码呢

course = 'Python for Beginners'
print(course[1:-1])

运行后得知,就是从第一位访问到第18位,具体为什么很好理解,按照上面字符和数字的对应就可以很直观的观察到

字符串的格式化输出
什么是格式化呢?
在维基百科中是这样解释的:

格式化是指对磁盘或者磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中的文件被清除,格式化通常分为低级格式化个高级格式化,如果没有特殊指明,对硬盘的格式化通常是指高级格式化,而对软盘的格式化通常同时包括这两者。

词条链接
对于格式化字符串,维基百科中是这样解释的:

格式化字符串(英语:format string),是一些程序设计语言在格式化输出API函数中用于指定输出参数的格式与相对位置的字符串参数,例如C、C++等程序设计语言的printf类函数,其中的转换说明(conversion specification)用于把随后对应的0个或多个函数参数转换为相应的格式输出;格式化字符串中转换说明以外的其它字符原样输出。

词条链接
通俗的来讲,如果需要将字符串格式化,就要先制定一个模板,在这个字符串的模板中的某几个位置中流出空位来,然后在这些空位中填上这些字符串,那么,这些程序如何知道我要给这个地方空出来位置呢,这时候就需要将这些空位用一个符号来表示,这样的符号被称为占位符,占位符仅仅是占据位置但并不输出占位符。
使用的方法如下:

print('Python for %s' % 'Beginners')

这样就能输出字符串:Python for Benginners
而Python中有很多种的占位符,列表如下:

占位符说明
%s字符串(采用str()显示)
%r字符串(采用repr()显示)
%c单个字符
%b二进制整数
%d十进制整数
%i十进制整数
%o八进制整数
%x十六进制整数
%e指数(基底为e)
%E指数(基地为E)
%f浮点数
%F浮点数
%g指数或浮点数
%G指数或浮点数

举个栗子:

print('Python %d' % 3)

同样的,一串语句中也可以设置多个占位符

print('Python %d.%d' % (3,7))

这样的格式使用占位符,输出的就是Python 3.7
同样占位符还有很多类似的操作,比如输出宽度等等,如下:

常用字符串的方法Methonds
split
将字符串根据某个分隔符进行分解
具体操作方式如下:

course = 'Python for Beginners'
print(course.split(' '))

输出结果:
在这里插入图片描述
运用空格作为分割得到了列表(list)的返回值,后续内容会讲到列表

strip/lstrip/rstrip
string.strip() 去掉字符串两端的空格
string.lstrip() 去掉字符串最左边的空格
string.rstrip() 去掉字符串最右边的空格
具体实例如下:

course = ' Python for Beginners '
print(course.strip())
print(course.lstrip())
print(course.rstrip())

运行结果:
在这里插入图片描述

查看上一篇:一个小栗子和一个小练习
查看下一篇:list(列表)的有关内容
查看目录:查看Python教程目录

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值