python字符串定界符_Python字符串深入探讨

Python中的字符串是不可变类型,就是说改变一个字符串的元素需要新建一个新的字符串。

字符串是由独立的字符组成的,也是一种序列,上节中讲到的序列的通用操作方法也适用于字符串。例如:

通过切片操作顺序地访问子串;

通过len()求字符串的长度等;

通过in或not in操作符判断字符串中是否存在某个字符。

Python里面没有字符这个类型,而是用长度为1 的字符串来表示这个概念,当然,这其实也是一个子串。

访问字符串举例:

aString = 'Hello World!'

print(aString[0])

print(aString[1:5])

print(aString[6:])

输出:

H

ello

World!

如何改变字符串

你可以通过给一个变量赋值(或者重赋值)的方式“更新”一个已有的字符串。新的值可能与原有值差不多,也可能跟原有串完全不同。例如:

aString = 'Hello World!'

aString = aString[:6] + 'Python!'

print(aString)

aString = 'different string altogether'

print(aString)

输出:

Hello Python!

different string altogether

如何删除字符和字符串

再重复一遍,字符串是不可变的,所以不能仅仅删除一个字符串里的某个字符,你能做的是清空一个空字符串,或者是把剔除了不需要的部分后的字符串组合起来形成一个新串。

假设您想要从“Hello World!”里面删除小写的“l”,那么您需要这样做:

aString = 'Hello World!'

aString = aString[:3] + aString[4:]

print(aString)

输出:

Helo World!

通过赋一个空字符串或者使用del 语句来清空或者删除一个字符串。不过,在大部分应用程序里,没有必要显式的删除字符串。定义这个字符串的代码最终会结束,那时Python 会自动释放这些字符串。

特殊字符和控制字符

像其他高级语言和脚本语言一样,一个反斜线加一个单一字符可以表示一个特殊字符,通常是一个不可打印的字符,这就是我们上面讨论的特殊字符,如果这些特殊字符是包含在一个原始字符串中的,那么它就失去了转义的功能。

除了通常用的特殊字符,比如换行符( )、tab 符( )之外,也可以直接用ASCII 码值来标示特殊字符:\000 或者xXX,分别对应字符的八进制和十六进制ASCII 码值,下面分别是十进制,八进制和十六进制的0、65、和255:

ASCII

ASCII

ASCII

十进制

0

65

255

八进制

\000

101

177

十六进制

x00

x41

xFF

特殊字符,包括反斜杠转义的那些都可以像普通字符一样存储到Python 的字符串中。

跟C 字符串的另一个不同之处是Python 的字符串并不是以NUL(\000)作为结束符的,NUL 跟其他的反斜杠转义字符没什么两样。事实上,一个字符串中不仅可以出现NUL 字符,而且还可以出现不止一次,在字符串的任意位置都可以。下表列出了被大部分Python 版本支持的转义字符。

如上所述,就像使用连字符来让一行的内容持续到下一行一样,可以用显式定义八进制或者十六进制的ASCII 码的方式定义特殊字符,合法的ASCII 码值范围是从0 到255(八进制的是0177,十六进制是0XFF)。

反斜杠开头的转义字符

X

八进制

十进制

十六进制

字符

说明

\0

000

0

0x00

Nul

空字符Nul

a

007

7

0x07

BEL

响铃字符

010

8

0x08

BS

退格

011

9

0x09

HT

横向制表符

012

10

0x0A

LF

换行

v

013

11

0x0B

VT

纵向制表符

f

014

12

0x0D

FF

换页

015

13

0x0D

CR

回车

e

033

27

0x1B

ESC

转义

042

34

0x22

双引号

047

39

0x27

单引号

\

134

92

0x5C

反斜杠

说明:

OOO:八进制值(范围是000 到0177);

xXX:x 打头的十六进制值(范围是0x00 到0xFF);

:连字符,将本行和下一行的内容连接起来。

控制字符的一个作用是用做字符串里面的定界符,在数据库或者web 应用中,大多数的可打印字符都是被允许用在数据项里面的,就是说可打印的字符不适合做定界符。

用可打印的字符串比如冒号(:)来作定界符,将会很难分辨一个字符到底是数据还是定界符,而且还会限定你能用在数据项里面的字符数量,而这不是你想要的。

一个通常的解决方案是,使用那些不经常使用的,不可打印的ASCII 码值来作为定界符,它们是非常完美的定界符,这样一来诸如冒号这样的可打印字符就可以解脱出来用在数据项中了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值