【Python】Python之字符串探索篇

**

【Python】Python之字符串探索篇

**

Python中定义字符串

在之前的文章中,我们已经简单的介绍过了字符串类型(string),描述了字符串可以用’ ‘或者" "或者’’’ ‘’'包括起来进行表示。
如果字符串本身包含 ’ 那该怎么办?比如我们要表示字符串 I’m OK! ,这时,则可以用" "包括起来表示,如下图所示。

在这里插入图片描述
代码如下:

print("I'm OK!")

同样相类似的,如果字符串包含 " ,我们就可以用’ '包括起来进行表示:
在这里插入图片描述
代码如下:

print('She said,"What do you mean?"')

如果字符串既包含 ’ 又包含 " 而我又傲娇的不想用 ‘’’ 应该怎么办呢,或者如果我们要在单引号字符串中使用单引号本身,要在双引号字符串中使用双引号本身,那我们是不是要使用一种解决方案把我们的想法实现?
在这个时候,我们就需要对字符串的某些特殊字符进行“转义”,在Python字符串中,我们使用(\)来进行转义。
比如我们举个例子,要表示字符串 ‘Xiaoming said,“I’m OK!”.’
由于外部表示引用的 ’ 和 I’m 中的 ’ 会引起歧义,因此,我们在I’m 的 ’ 前面插入一个转义字符 \ 表示这是一个普通字符,不代表字符串的起始,因此,这个字符串又可以表示为
‘Xiaoming said,“I’m OK”.’

在这里插入图片描述
代码如下:

print('Xiaoming said,"I\'m OK".')

在此值得注意的是:
(1)转义字符 (\)是不计入字符串内容中的。
(2)在一个字符串中,文末单独的斜杠号表示下一行的继续,而不是开始写新的一行。
(3)可以使用双反斜杠(\)来表示反斜杠本身,而可以用(\n)来表示换行符,可以用(\t)来表示一个制表符。

Python中的raw字符串

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会比较麻烦,尤其是代码长度冗杂的时候。为了避免这种情况,我们可以在字符串前面加个前缀 r或者R ,表示这是一个 raw 字符串,里面的字符就不需要转义了。

在这里插入图片描述
代码如下:

print(r'\(~_~)/ \(~_~)/')

ps:但是 r’…’ 表示法不能表示多行字符串,也不能表示包含 ’ 和 " 的字符串,所以当我们如果想要把多行字符串变成一个raw字符串,三引号 ‘’’ 字符就可以派上用场了。

在这里插入图片描述
代码如下:

print(r'''"To be, or not to be": that is the question.
Whether it's nobler in the mind to suffer.''')

同时,如果我们想要指示某些不需要使用转义符号进行特别处理的字符串,那么我们同样需要指定一个raw字符串,比如我们需要原样输出(\n)而不是令其换行,具体代码及其结果如下。
在这里插入图片描述
代码如下:

print(r'We need to have a talk. \n')
Python中的Unicode字符串

其实在字符串中,还有一个编码问题。
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能进行处理。在最早的时候,计算机在设计时采用8比特(bit)作为一个字节(byte),所以一个字节能表示的最大的整数就是255(二进制的11111111换算为十进制的255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
如果要表示中文,很明显一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。类似的,日文和韩文等其他语言也有这个问题产生。久而久之,为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了,所以Unicode码也被称为万国码!
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以了。因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’apple’在Python内部都是ASCII编码的。
Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u’…'表示,具体例子如下图。

在这里插入图片描述
代码如下:

print(u'我爱中国!')

在此注意,不加 u ,中文就不能正常显示。
Unicode字符串除了多了一个 u 之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效果。
BUT在python3.x的版本中,相较于之前版本的ASCII码,Unicode码已经被运用在环境中。所以不加u,也可以完成对中文的编译,但是上述知识有利于完整字符串的知识,在此简单介绍了。

转义字符的例子
在这里插入图片描述
代码:

print(u'中文\n韩文\n日文\n')

多行字符串的例子
在这里插入图片描述
代码:

print(u'''Python的Unicode字符串支持"中文",
"日文",
"韩文"等多种语言''')

倘若中文字符串在Python环境下遇到 UnicodeDecodeError的情况,这是因为.py文件保存的格式有问题。可以在第一行添加注释:# -- coding: utf-8 --
这个前缀目的是告诉Python解释器,用UTF-8编码读取源代码。然后Notepad++ 另存为… 并选择UTF-8格式保存。

字符串的截取

字符串的截取格式可写为:字符串变量【start_index:end_index+1】,此处在end_index处加1,可以被理解为我们数学上所说的左闭右开区间,例子如下。

在这里插入图片描述
代码:

string='Wangxiaoming'
print(string[0])
print(string[1:5])
print(string[-4])
字符之间的运算

我们先尝试以下代码的运行。

string='2'
number=1
print(string + number)

这是运行结果,我们会发现代码报错了。
在这里插入图片描述
通过在百度上对报错情况的查询后,我意识到字符串(string)只是Python中的一种数据类型,string=‘2’ 在赋值的时候使用了单引号,数据类型是字符串,而number=1的数据类型则是整数型。
而不同的数据类型之间是不能进行运算的,但是不同的数据类型可以相互转换,为此我修改了上述代码后,代码可以正常运行,修改后的代码如下:

string='2'
number=1
numberx=int(string)
print(numberx + number)

在这里插入图片描述
通过上述的理解,我得到了四则运算的规律,以 “+” 号算法为例,如果相加双方是数值型,此时 “+” 号为运算符;如果相加双方是字符型数据,那此时 “+” 号作用为连接符。举个例子,运行代码如下:

a=1
b=5
print(a + b)
print('a' + 'b')

在这里插入图片描述
至此,Python的字符串告一段落!撒花!!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值