一说到字符串,不管哪门语言,其实会让人头痛的,因为它们有不同的用处,特别是在混用的时候,很容易脑子糊掉。
先看看有哪些字符串,普通的字符串就分为:
单引号字符串,形如:
双引号字符串,形如:
还有其他非普通字符串:
原始字符串,形如:
unicode字符串,形如:
长字符串,形如:
普通字符串
先讲普通字符串,后面再讲其他类型的字符串。我们在控制台打印一下看看输出的结果如何?
有没有一点奇怪?双引号打印出来的都是单引号()的形式,这样看来它们并没有太大区别,那为什么又需要保留这两种类型的字符串呢?
我们看看下面的组合使用,
这个时候的控制台输出,竟然都是双引号()的形式!!这是因为我们需要输出带单引号,这里其实是撇号,所以为了显示出来就用双引号来引用了。
在来看一个例子,我们想输出双引号,
这样因为我们需要输出带双引号的字符串,所以python控制台为了显示出来就又用单引号引号了。
总之,默认情况是输出,如果字符串中包含,则用输出,如果字符串中包含,则用输出,我们把这种输出想像成一种就好理解了,即中文中的引用一段话的意思。
再看一个例子:
这进一步说明了组合的好处,在双引号中,确实不需要那么麻烦的使用转义字符来获取单引号。
原始字符串
原始字符串是用前缀修饰的,如, 不会对反斜杠进行转义,如:
如果我们想输出形如:这样的带反斜线的目录,则原始字符串很容易做到,如:
这样我们看到了原始字符串的好处了吧。
unicode字符串
unicode字符串是用前缀修饰的,如,如:
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。它分为utf-8, utf-16,utf-32等
具体不在这里展开说明。
小试牛刀
我们再来看一个问题 “如何在字符串尾打印出反斜线()?”
对于普通字符串,如果想在该尾部添加反斜杠(),则会出现如下不合法信息:
此时,需要使用再多使用一个反斜杠进行转义,如下:
原始字符串,则使用指定,如果也想在该尾部添加反斜杠(),则会出现如下不合法信息,
此时,我们可能会想着使用反斜杠进行转义,即会如下使用,但这样虽然不会报错,但也不是我们想要的结果,它会出现两个反斜线,
因为在原始字符串中并不会被转义,除了像现在这样在尾部的情况,其他全部原样输出,
那我们就是需要使用原始字符串,又需要在尾部输出呢?则可以借助字符串拼接的方式如下使用,
既然有这么多种字符串,那我想知道它们所占字节大小,该怎么办?
2.6版本前,使用方法
2.6版本后,才支持使用方法,当然也支持方法
举例如下:
最后来看一下python控制台的输出和采用print表达式的输出有什么不同?
python控制台输出的是python自己使用的表达式格式,而print是让人更易阅读的格式。如下,
如果我在使用的同时,我就想输出该怎么办?可以使用,如:
如果我们需要打印一个包含的数值该怎么办?我们可以使用, 或者,如下:
由于输出的字符串有不同的格式,一种是适用于python代码的python表达式,一般带有单引号,如 ,另一种是易于人阅读的格式,所以有时候,我们有不同的应用场景会需要输入这两种字符串格式,这就是和的区别了。会假设用户输入的就是适合python的表达式,即带有或者,而会将用户输入的字符串进行包装成python表达式的格式,一般我们都用 代替例如:
既然返回的是python代码的表达式,那么在接收它的返回值当作整数使用的时候,就需要进行强制类型转换一下,如:
使用字符串注意点
1、字符串格式化使用这个格式化操作符,当然它也是求余运算符。格式化字符串的部分称为。当需要在格式化字符串里面包括百分号,那么必须使用,这样Python就不会将其误认为是。
2、模块提供另一种格式化值的方法:。如:
会用转进来的关键字参数替换字符串中的。
如果替换字段是单词的一部分,那么参数名就必须用括起来,
当然如果需要插入,则可以使用。
3、字段宽度和精度部分,我们如果使用的时候,此时的数值会从元组参数中读出,有几个就必须对应的传几个数值。
4、方法可以在一个较长的字符串中查找子字符串,它返回子串所在位置的索引。如果不有找到则返回。它并不会返回bool值,如果返回的是0,表示在位置找到了子串。
5、如果要转换字符串的首字母为大写,其他为小写,则可以调用。另外就是,用它的方法,他们对于单引号有区别。请看:
其实,是调用了三个函数,首先调用来拆分字符串,然后调用使首字母大写,最后用来联接字符串。
6、和都可以用于查找并替换原字符串中的子串,其中支持多个替换,也就是可以执行替换,而只处理单个字符,它一般需要模块中的来先准备好。接受两个等长字符串,第一个字符串中的每个字符都用第二个字符串中相同位置的字符替换。如下:
领取专属 10元无门槛券
私享最新 技术干货