首页 > Python基础教程 >
-
Python线性数据结构(2)
还有index()
和find()
类似,不过找不到会抛异常,不建议使用。
像s.count()
还可以统计字符出现的次数。
像len(s)
还可以统计字符串的长度。
分割
split( ) 方法:S.split(sep=None, maxsplit=-1) -> list of strings
sep表示分隔符,缺省为空白字符串,maxsplit=-1表示遍历整个字符串,最后返回列表。
str = "a,b,c,d,e,f,g"
print(str.split(sep=','))
# 输出结果如下:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
rsplit( ) 方法与上面不同就是,从右至左遍历。
splitlines() 方法: S.splitlines([keepends]) -> list of strings
按行来切割字符串,keepends表示是否保留行分隔符,最后返回列表。
str = "a\nb\nc\r\nd"
print(str.splitlines())
print(str.splitlines(keepends=True))
# 输出结果如下:
['a', 'b', 'c', 'd']
['a\n', 'b\n', 'c\r\n', 'd']
partition() 方法 : S.partition(sep) -> (head, sep, tail)
从左至右查询分隔符,遇到就分割成头、分隔符、尾的三元组,返回的是一个元组tuple。
str = "a*b*c*d"
print(str.partition('*'))
# 输出结果如下:
('a', '*', 'b*c*d')
rpartition() 方法 :S.rpartition(sep) -> (head, sep, tail)
与上方法不同,就是从右至左,不过这个比较常用,可以获取后缀部分信息。
str1 = "http://www.python.org:8843"
str2 = str1.rpartition(':')
port = str2[-1]
print(port)
替换
replace() 方法:S.replace(old, new[, count]) -> str
遍历整个字符串,找到全部替换,count表示替换次数,缺省替换全部,最后返回一个新的字符串
。
str = "www.python.org"
print(str.replace('w','m')) # 返回的是一个新的字符串
print(str) # 字符串不可变,保持原样
# 输出结果如下:
mmm.python.org
www.python.org
移除
strip() 方法:S.strip([chars]) -> str
在字符串两端移除指定的字符集chars
, 缺省移除空白字符。
str = " * www.python.org *"
print(str.strip("* ")) # 去掉字符串首尾带有星号'*' 和 空白' '
# 输出结果如下:
www.python.org
还有lstrip()
和 rstrip
分别是移除字符串左边和右边字符集。
首尾判断
startswith() 方法:S.startswith(prefix[, start[, end]]) -> bool
缺省判断字符串开头是否有指定的字符prefix,也可指定区间。
str = "www.python.org"
print(str.startswith('www',0,14))
print(str.startswith('p',0,14))
# 输出结果如下:
True
False
endswith() 方法:S.endswith(suffix[, start[, end]]) -> bool
缺省判断字符串结尾是否有指定的字符suffix,也可指定区间。
str = "www.python.org"
print(str.startswith('www',0,14))
print(str.startswith('p',0,14))
# 输出结果如下:
True
False
str = "www.python.org"
print(str.endswith('g',11,14))
# 输出结果如下:
True
格式化
c风格格式化:
格式字符串:使用%s(对应值为字符串),%d(对应值为数字)等等,还可以在中间插入修饰符%03d。
被格式的值:只能是一个对象,可以是元组或是字典。
name = "Tom"
age = 18
print("%s is %d age." % (name,age))
# 输出结果如下:
Tom is 18 age.
format格式化:
格式字符串:使用花括号{ }, 花括号里面可以使用修饰符。
被格式的值:*args为可变位置参数,**kwargs为可变关键字参数。
# 位置传参
print("IP={} PORT={}".format('8.8.8.8',53)) # 位置传参
print("{Server}: IP={1} PORT={0}".format(53, '8.8.8.8', Server='DNS Server')) # 位置和关键字传参传参
# 输出结果如下:
IP=8.8.8.8 PORT=53
DNS Server: IP=8.8.8.8 PORT=53
# 浮点数
print("{}".format(0.123456789))
print("{:f}".format(0.123456789)) # 小数点默认为6位
print("{:.2f}".format(0.123456789)) # 取小数点后两位
print("{:15}".format(0.123456789)) # 宽度为15,右对齐
# 输出结果如下:
0.123456789
0.123457 # 为什么是这个值?大于5要进位
0.12
0.123456789 # 左边有4个空格
其他常用函数
str = "DianDiJiShu"
print(str.upper()) # 字母全部转化为大写
print(str.lower()) # 字母全部转化为小写
# 输出结果如下:
DIANDIJISHU
diandijishu
2.2.4 bytes 字节
bytes
和 bytearray
从python3引入的两种数据类型。
在计算机的世界里,机器是以0
和 1
组成的,也叫二进制(字节)来通信的,这套编码我们叫做ASCII
编码。
所以机器通信的语言就叫做机器语言。然而我们人类想要跟机器通信,那么需要怎么做呢?
- 把人类的语言编码成机器能够识别的语言,通常叫做编码(字符串转换为ASCII码)。
- 把机器的语言解码成人类能够识别的语言,通常叫做解码(ASCII码转换为字符串)。
至今现代编码的发展史过程大概是这样的:ASCII(1字节) -> unicode(2~4字节) -> utf-8(16字节),utf8是多字节编码,一般使用13字节,特殊使用4字节(一般中文使用3字节),向下兼容ASCII编码。
中国也有属于自己的编码:gbk
ASCII码表常用的必须牢记(整理部分):
详细ASCII码下载链接:
链接:https://pan.baidu.com/s/1fWVl57Kqmv-tkjrDKwPvSw 提取码:tuyz
所以,机器上的进制就是字节,1字节等于8位,例如:十进制2,用2进制和16进制表示:
# 二进制
0000 0010 # 一个字节bytes
# 16进制,机器基本都是显示16进制
0x2
bytes 是不可变类型
bytes() # 空bytes,一旦创建不可改变
bytes(int) # 指定字节的大小,用0填充
bytes(iterable_of_ints) # [0.255]整数的可迭代对象
bytes(string, encoding[, errors]) # 等价于string.encoding(),字符串编码成字节
bytes(bytes_or_buffer) # 复制一份新的字节对象
-
初始化
b1 = bytes() b2 = bytes(range(97,100)) b3 = bytes(b2) b4 = bytes('123',encoding='utf-8') b5 = b'ABC' b6 = b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8') print(b1, b2, b3, b4, b5, b6, sep='\n') # 输出结果如下: b'' b'abc' b'abc' b'123' b'ABC' 你好
2.2.5 bytearray 字节数组
bytearray 是可变数组,可以进行增删改操作,类似列表。
bytearray() # 空bytearray,可改变
bytearray(iterable_of_ints) # [0.255]整数的可迭代对象
bytearray(string, encoding[, errors]) # 等价于string.encoding(),字符串编码成字节
bytearray(bytes_or_buffer) # 复制一份新的字节数组对象
bytearray(int) # 指定字节的大小,用0填充
-
增删改
# 初始化 b = bytearray() print(b) # 输出结果如下: bytearray(b'') #-------------------------- # 增加元素对象 b.append(97) print(b) b.extend([98,99]) print(b) # 输出结果如下: bytearray(b'a') bytearray(b'abc') #-------------------------- # 插入元素对象 b.insert(0,65) print(b) # 输出结果如下: bytearray(b'Aabc') #-------------------------- # 删除元素对象 b.pop() print(b) # 输出结果如下: bytearray(b'Aab')
今天就到这了,下一回合咱再接着唠嗑 set (集合)
和 dict (字典)
,敬请耐心等待。