Python数据类型(二)文本类型-str

Python中处理文本数据使用由Unicode编码构成的不可变序列字符串—str对象。字符串表达形式如下:

.单引号 ‘This article describes information about str object’

.双引号 “This article describes information about str object”

.三重引号 ‘’‘ This article describes information about str object’’’

使用三重引号的字符串可以跨越多行,并且所有的空字符串都包含在字符串值中。

str类型同样是不可变类型,除了上面三种显式构建方式之外,也同样有构建函数进行构建

字符串构建

构建函数:

函数 释义
str(object=b’’) 返回构建的字符串
str(object=’’, encoding=’uft-8’, errors=’strict’) 返回由object构成的字符串,若object为空,则返回空字符串,如果encoding或errors均未设置str(object) 返回 object.__str__(),这是 object 的“非正式”或格式良好的字符串表示。 对于字符串对象,这是该字符串本身。 如果 object 没有 __str__() 方法,则 str() 将回退为返回 repr(object)。如果 encoding 或 errors至少给出其中之一,则 object 应该是一个 bytes-like object (例如 bytes 或 bytearray)。 在此情况下,如果 object 是一个 bytes (或 bytearray) 对象,则 str(bytes, encoding, errors) 等价于 bytes.decode(encoding, errors)。 否则的话,会在调用 bytes.decode() 之前获取缓冲区对象下层的 bytes 对象。 请参阅 二进制序列类型 — bytes, bytearray, memoryview 与 缓冲协议 了解有关缓冲区对象的信息。
io.StringIO() Text I/O内存缓冲区,若调用close()方法则缓冲区结束
>>> str(b'Zoot!')
"b'Zoot!'"

字符串访问

可以直接通过index的方式访问字符串中的字符,如字符串s = ‘abcdfdeff’, s[0] = ‘a’, s[0:3]=’abc’, s[0:3]也可以写成s[:3],代表从0个位置开始,取第3个字符之前的字节,第一个数字代表从第几个字符开始,:后面代表取到第几个字节(最后一个字节的字符不包含在内)。

因为不存在单独的字符类型,对字符串做索引操作的时候会产生长度为1的字符串,即s[0] == s[0:1]

字面值

字符串的字面值定义如下:

stringliteral   ::=  [stringprefix](shortstring | longstring)
stringprefix    ::=  "r" | "u" | "R" | "U" | "f" | "F"
                     | "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF"
shortstring     ::=  "'" shortstringitem* "'" | '"' shortstringitem* '"'
longstring      ::=  "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
shortstringitem ::=  shortstringchar | stringescapeseq
longstringitem  ::=  longstringchar | stringescapeseq
shortstringchar ::=  <any source character except "\" or newline or the quote>
longstringchar  ::=  <any source character except "\">
stringescapeseq ::=  "\" <any source character>
bytesliteral   ::=  bytesprefix(shortbytes | longbytes)
bytesprefix    ::=  "b" | "B" | "br" | "Br" | "bR" | "BR" | "rb" | "rB" | "Rb" | "RB"
shortbytes     ::=  "'" shortbytesitem* "'" | '"' shortbytesitem* '"'
longbytes      ::=  "'''" longbytesitem* "'''" | '"""' longbytesitem* '"""'
shortbytesitem ::=  shortbyteschar | bytesescapeseq
longbytesitem  ::=  longbyteschar | bytesescapeseq
shortbyteschar ::=  <any ASCII character except "\" or newline or the quote>
longbyteschar  ::=  <any ASCII character except "\">
bytesescapeseq ::=  "\" <any ASCII character>

第一种字面值是描述str类型,第二种字面值是描述bytes类型。

如果字符串前面带有’b’或’B’ 等bytesprefix类型,则生成的是bytes类型;如果字符串前面带有’r’,’u’则生成的是str类型;如果字符串前面带有’r’或’R’,则代表字符串不会进行转义。

为了与 Python 2 系列的向下兼容,再次允许字符串字面值使用 u 前缀。 它对字符串字面值的含义没有影响,并且不能与 r 前缀同时出现。

转义序列&行边界

表示符 描述
\n 换行
\r 回车
\r\n 回车+换行
\v 或\x0b 行制表符-纵向
\f或\x0c 换表单
\x1c 文件分隔符
\x1d 组分隔符
\x1e 记录分隔符
\x85 下一行
\u2018 行分隔符
\u2029 段分隔符
\ 在行尾时为续行符
\ 反斜扛符号
\’ 单引号
\” 双引号
\a 响铃
\b 退格(Backspace)
\000
\t 横向制表符
\o 八进制数
\x 十六进制数
\other 其它的字符以普通格式输出

字面值拼接

多个相邻的字符串或字节串字面值 (以空白符分隔),所用的引号可以彼此不同,其含义等同于全部拼接为一体。因此, "hello" 'world' 等同于 "helloworld"。此特性可以减少反斜杠的使用,以方便地将很长的字符串分成多个物理行,甚至每部分字符串还可分别加注释

字符串常量

字符串定义的常量有:

常量 描述
ascii_letters ascii_lowercase和asscii_uppercase的拼接组合
ascii_lowercase 26个小写字母’abcdefghijklmnopqrstuvwxyz’,不依赖本地,不可改变
ascii_uppercase 26个大写字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’,不依赖本地,不可改变
digits 字符串 '0123456789'
hexdigits 字符串 '0123456789abcde
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值