Python系列 12 线性扁平序列(str)

字符串

字符串(str)一般是指Unicode字符串,见名知意,字符串是由多个字符所构成的一个串。

它是Python中最常用的数据类型之一,因此十分重要。

字符串有一个最显著的特征,即不可变,也就是说你无法使用索引来改变字符串中的字符,仅限于获取。

字符串特性

字符串特性如下:

  1. 字符串属于线性扁平序列
  2. 字符串是不可变的,即对象本身的属性不会根据外部变化而变化
  3. 字符串底层是一段连续的内存空间

基本声明

以下是使用类实例化的形式进行对象声明:

string = str("ABCDEFG")
print("value : %r\ntype : %r" % (string, type(string)))

# value : 'ABCDEFG'
# type : <class 'str'>

也可以选择使用更方便的字面量形式进行对象声明,使用英文状态下的单引号、双引号、三单引号、三双引号将数据项进行包裹即可:

string = "ABCDEFG"
print("value : %r\ntype : %r" % (string, type(string)))

# value : 'ABCDEFG'
# type : <class 'str'>

个人并不推荐常规的使用三单引号或三双引号进行字符串定义,因为除了字符串定义外它们还具有文档注释的功能。

续行操作

在Python中,如果一个字符串过长,可能会导致不符合PEP8规范的情况出现。

  • 每行最大的字符数不可超过79,文档字符或者注释每行不可超过72

如果要定义这样的长字符串,推荐使用三单引号或者三双引号进行定义,这样即可进行换行(但会保留特殊字符,如\n):

string = """
  江雪
   柳宗元
千山鸟飞绝
万径人踪灭
孤舟蓑笠翁
独钓寒江雪
"""
print("value : %r\ntype : %r" % (string, type(string)))

# value : '\n  江雪\n   柳宗元\n千山鸟飞绝\n万径人踪灭\n孤舟蓑笠翁\n独钓寒江雪\n'
# type : <class 'str'>

类型转换

字符串支持与布尔型、整形、以及浮点型进行转换,这是最常用的操作:

string = "100"
iStr = int(string)
bStr = bool(string)
fStr = float(string)

print("value : %r\ntype : %r" % (iStr, type(iStr)))
print("value : %r\ntype : %r" % (bStr, type(bStr)))
print("value : %r\ntype : %r" % (fStr, type(fStr)))

# value : 100
# type : <class 'int'>
# value : True
# type : <class 'bool'>
# value : 100.0
# type : <class 'float'>

需要注意的是,如果一个字符串不是纯数字,那么将其转换为整形或浮点型时将会出现异常:

string = "Non-digital string: 100"

iStr = int(string)
fStr = float(string)


print("value : %r\ntype : %r" % (iStr, type(iStr)))
print("value : %r\ntype : %r" % (fStr, type(fStr)))

# ValueError: invalid literal for int() with base 10: 'Non-digital string: 100'

此外,字符串也支持转换为列表以及集合:

string = "①〇②④"
setStr = set(string)
listStr = list(string)

print("value : %r\ntype : %r" % (setStr, type(setStr)))
print("value : %r\ntype : %r" % (listStr, type(listStr)))

# value : {'①', '〇', '②', '④'}
# type : <class 'set'>
# value : ['①', '〇', '②', '④']
# type : <class 'list'>

特殊的\

在普通的声明字符串中,\后面一般都会跟上一个特殊字符。

该字符具有特殊的意义,如\n代表换行,\t代表制表符等,这种具有特殊意义的\char组合被称为转义字符。

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\ 代表一个反斜线字符’’’ 092
代表一个单引号(撇号)字符 039
" 代表一个双引号字符 034
? 代表一个问号 063
\0 空字符(NUL) 000
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 十六进制所代表的任意字符 十六进制

如果你还是不能理解,那么可看下面这个示例:

我想打印 hello”world,并且我的字符串字面量声明采用 “ 进行包裹。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值