a = 'python'
b = "python"
c = '''python'''
print(id(a), id(b), id(c))
驻留机制的几种情况:(交互模式下)
a = 'abc'
b = 'a' + 'bc'
c = ''.join(['ab', 'c'])
print(a, b, c)
print(a is b, a is c)
代码中a与b相同,a与c不相同,原因是b 在编译期间就完成了字符串拼接,而c需要到运行期间执行join()方法完成拼接,需要开辟新的空间存储,所以a与c不同。
驻留机制优缺点
方法 | 说明 |
---|---|
index() | 查找子串第一次出现的位置,如果不存在时,抛出ValueError |
rindex() | 查找子串最后一次出现的位置,如果不存在时,抛出ValueError |
find() | 查找子串第一次出现的位置,如果不存在时,则返回-1 |
rfind() | 查找子串最后一次出现的位置,如果不存在时,则返回-1 |
s = 'hello,hello'
print(s.index('llo'))
print(s.find('llo'))
print(s.rindex('llo'))
print(s.rfind('llo'))
方法 | 说明 |
---|---|
upper() | 转成大写字母 |
lower() | 转成小写字母 |
swapcase() | 小写字母转大写,大写字母转小写 |
capitalize() | 第一个字符转大写,其余字符转小写 |
title() | 每个单词第一个字符转大写,其余字符转小写 |
s = 'hElLo,wOrLd'
print('----------upper()----------')
a = s.upper()
print(a)
print('----------lower()----------')
a = s.lower()
print(a)
print('----------capitalize()----------')
a = s.capitalize()
print(a)
print('----------title()----------')
a = s.title()
print(a)
方法 | 说明 |
---|---|
center() | 居中对其,第一个参数指定宽度,第二个参数指定填充符 |
ljust() | 左对齐,第一个参数指定宽度,第二个参数指定填充符 |
rjust | 右对齐,第一个参数指定宽度,第二个参数指定填充符 |
zfill | 右对齐,左边用0填充,只有一个接受宽度的参数 |
s = 'python'
print('----------center()----------')
print(s.center(20))
s = 'python'
print('----------ljust()----------')
print(s.ljust(20, '*'))
s = 'python'
print('----------rjust()----------')
print(s.rjust(20, '*'))
s = 'python'
print('----------zfill()----------')
print(s.zfill(20))
方法 | 说明 |
---|---|
split() | 从左边开始分割,默认以空格字符拆分,返回一个列表 |
rsplit() | 从右边开始分割,默认以空格字符拆分,返回一个列表 |
print('----------split()----------')
s = 'hello world python java'
lst = s.split()
print(lst)
s = 'hello/world/python/java'
lst = s.split(sep = '/')
print(lst)
s = 'hello/world/python/java'
lst = s.split(sep = '/', maxsplit=2)
print(lst)
print('\n----------rsplit()----------')
s = 'hello world python java'
lst = s.rsplit()
print(lst)
s = 'hello/world/python/java'
lst = s.rsplit(sep = '/')
print(lst)
s = 'hello/world/python/java'
lst = s.rsplit(sep = '/', maxsplit=2)
print(lst)
方法 | 说明 |
---|---|
isidentifier() | 判断指定字符串是不是合法的标识符 |
isspace() | 判断指定字符串是否全部由空白字符组成(回车、换行、水平制表符) |
isalpha() | 判断指定字符串是否全部由字母组成 |
isdecimal() | 判断指定字符串是否全部由十进制的数字组成 |
isnumeric() | 判断指定字符串是否全部由数字组成 |
isalnum() | 判断指定字符串是否全部由字母和数字组成 |
print('----------isidentifier()----------')
print('hello,python'.isidentifier())
print('hello_python'.isidentifier())
print('\n----------isspace()----------')
print(' '.isspace())
print(', '.isspace())
print('\n----------isalpha()----------')
print('hello'.isalpha())
print('hello,python'.isalpha())
print('\n----------isdecimal()----------')
print('123'.isdecimal())
print('123.90'.isdecimal())
print('\n----------isnumeric()----------')
print('123'.isnumeric())
print('123_90'.isnumeric())
print('\n----------isalnum()----------')
print('123abc'.isalnum())
print('123%abc'.isalnum())
a = 'python'
b = ''.join(['py','thon'])
print(a, id(a), b, id(b))
print(a == b) # 比较值
print(a is b) # 比较内存地址
s = 'hello,python'
s1 = s[:5] # [0, 5)
print(s1)
s2 = s[3:] #[3, 末尾)
print(s2)
%作为占位符
% | 说明 |
---|---|
%s | 字符串 |
%i或%d | 整数 |
%f | 浮点数 |
print('name: %s, age: %d' % ('swy', 23))
{}作占位符
print('name: {0}, age: {1}'.format('swy', 23))
name = 'swy'
age = 23
print(f'name: {name}, age: {age}')
精度
print('%10d' % 99) # 10表示宽度
print('%.3f' % 3.14159265) # 保留三位小数
print('{:.3}'.format(3.14159265)) # 3表示一共三位数
print('{:.3f}'.format(3.14159265)) # 3表示三位小数
print('{:10.3f}'.format(3.14159265)) # 宽度为10,3表示三位小数
# 编码
s = '海上生明月'
print(s.encode(encoding='GBK'))
print(s.encode(encoding='UTF-8'))
# 解码
byte = b'\xba\xa3\xc9\xcf\xc9\xfa\xc3\xf7\xd4\xc2'
print(byte.decode(encoding='GBK'))
byte = b'\xe6\xb5\xb7\xe4\xb8\x8a\xe7\x94\x9f\xe6\x98\x8e\xe6\x9c\x88'
print(byte.decode(encoding='UTF-8'))