我是靠谱客的博主 单薄苗条,最近开发中收集的这篇文章主要介绍Python系列 12 线性扁平序列(str)字符串字节串四则运算字符间隙intern机制绝对引用索引切片常用方法版本区别底层探究,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
字符串
字符串(str)一般是指Unicode字符串,见名知意,字符串是由多个字符所构成的一个串。
它是Python中最常用的数据类型之一,因此十分重要。
字符串有一个最显著的特征,即不可变,也就是说你无法使用索引来改变字符串中的字符,仅限于获取。
字符串特性
字符串特性如下:
- 字符串属于线性扁平序列
- 字符串是不可变的,即对象本身的属性不会根据外部变化而变化
- 字符串底层是一段连续的内存空间
基本声明
以下是使用类实例化的形式进行对象声明:
string = str("ABCDEFG")
print("value : %rntype : %r" % (string, type(string)))
# value : 'ABCDEFG'
# type : <class 'str'>
也可以选择使用更方便的字面量形式进行对象声明,使用英文状态下的单引号、双引号、三单引号、三双引号将数据项进行包裹即可:
string = "ABCDEFG"
print("value : %rntype : %r" % (string, type(string)))
# value : 'ABCDEFG'
# type : <class 'str'>
个人并不推荐常规的使用三单引号或三双引号进行字符串定义,因为除了字符串定义外它们还具有文档注释的功能。
续行操作
在Python中,如果一个字符串过长,可能会导致不符合PEP8规范的情况出现。
- 每行最大的字符数不可超过79,文档字符或者注释每行不可超过72
如果要定义这样的长字符串,推荐使用三单引号或者三双引号进行定义,这样即可进行换行(但会保留特殊字符,如n):
string = """
江雪
柳宗元
千山鸟飞绝
万径人踪灭
孤舟蓑笠翁
独钓寒江雪
"""
print("value : %rntype : %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 : %rntype : %r" % (iStr, type(iStr)))
print("value : %rntype : %r" % (bStr, type(bStr)))
print("value : %rntype : %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 : %rntype : %r" % (iStr, type(iStr)))
print("value : %rntype : %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 : %rntype : %r" % (setStr, type(setStr)))
print("value : %rntype : %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 |