基础用法
if __name__ == '__main__':
print()
# Python中没有单个字符的概念,单个字符也是字符串类型。
# 使用下标索引[],获取字符串中的单个字符
# 最后一个字符的索引为 -1,倒数第二个字符的索引为 -2
str1 = "012345"
a = str1[0]
b = str1[-5]
print('a =', a, 'b =', b)
# c = str[100] 报错
# d = str[-100] 报错
# 截取字符串,跳步
str0 = "0123456789"
str1 = str0[0:4] # "0123"
str2 = str0[:8:2] # "0246"
str3 = str0[4:9] # "45678"
print('st1 =', str1, 'str2 =', str2, 'str3 =', str3)
# 使用字符串切片的形式,获取整个字符串
str1 = "12345"
str2 = str1[:]
print('st2 =', str2)
# 获取最小字符和最大字符
str0 = "AaCcBbDdHk"
str3 = min(str0)
str4 = max(str0)
print('str3 =', str3, 'str4 =', str4)
# 将数字通过 repr() 转换成字符串,实现字符串和数字的拼接
num1 = 1024
str1 = "HaiCoder "
strHaiCoder = str1 + repr(num1) # 字符串和数字不能直接使用 + 号拼接
print('strHaiCoder =', strHaiCoder)
# str函数进行拼接
num1 = 1024
str1 = "HaiCoder "
strHaiCoder = str1 + str(num1)
# +号进行拼接
str1 = "Hello,"
str2 = "HaiCoder"
str0 = str1 + str2
print('str0 =', str0)
# 字符串写一起进行拼接
str0 = "Hello,""HaiCoder"
print('str0 =', str0)
# 合并列表字符串
# strResult = str.join(iterable)
# str 用于指定合并时的分隔符
# iterable 做合并操作的源字符串数据,允许以列表、元组等形式提供
lis = ['Study', 'From', 'HaiCoder']
print(','.join(lis)) # Study,From,HaiCoder
tup = ('Study', 'From', 'HaiCoder') # Study From HaiCoder
print(' '.join(tup))
# str.split(sep, maxSplit)
# str 要进行分割的字符串。
# sep 指定分隔符,可以包含多个字符。此参数默认为None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。
# maxSplit 可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxSplit + 1
# 如果不指定或者指定为 -1,则表示分割次数没有限制
str1 = "Hello,HaiCoder Hello,World"
print('strs =', str1.split())
print('strs =', str1.split(None, 0))
# S.count(sub[, start[, end]]) -> int
# S 表示原字符串
# sub 表示要检索的字符串
# start 指定检索的起始位置。如果不指定,默认从头开始检索
# end 指定检索的终止位置,如果不指定,则表示一直检索到结尾
str0 = "Study Python From HaiCoder"
str1 = "abababa"
print(str0.count('o')) # 3
print(str0.count('o', 11)) # 2
print(str0.count('o', 100)) # 0
print(str0.count('o', 10, 10)) # 0
print(str0.count('o', 10, 11)) # 1
print(str1.count('aba')) # 2
# S.find(sub[, start[, end]]) -> int
# S 原字符串
# sub 表示要检索的字符串
# start 表示开始检索的起始位置。如果不指定,则默认从头开始检索
# end 表示结束检索的结束位置。如果不指定,则默认一直检索到结尾
# find() 函数返回 int 类型的值,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1
strDemo = "000"
print(strDemo.find('I')) # -1
# S.index(sub[, start[, end]]) -> int
# index() 函数返回 int 类型的值,如果找到,则返回第一次出现该字符串的索引;反之,则抛出异常
# 对齐字符串
# S.ljust(width[, fillchar]) -> str
# S.rjust(width[, fillchar]) -> str
# S.center(width[, fillchar]) -> str
strHaicoder = "I study Python From HaiCoder"
lStr = strHaicoder.ljust(100)
print("Len Str =", len(strHaicoder), "Len LStr =", len(lStr))
lStr = strHaicoder.rjust(100)
print("Len Str =", len(strHaicoder), "Len LStr =", len(lStr))
lStr = strHaicoder.center(100)
print("Len Str =", len(strHaicoder), "Len LStr =", len(lStr))
# 判断是否以某个字符串开始/结束
# S.startswith(prefix[, start[, end]]) -> bool
# S.endswith(suffix[, start[, end]]) -> bool
str0 = "I study Python From HaiCoder"
print("IsStart =", str0.startswith("I study")) # True
# 使用 startswith() 函数,判断字符串指定位置以指定字符串开始
print("IsStart =", str0.startswith("study", 2)) # True 指定位置以指定字符串开始
print("IsEnd =", str0.endswith("HaiCoder")) # True
# 使用 title() 函数,将字符串首字母转成大写
str0 = "i study Python From HaiCoder"
print("str0 =", str0.title())
# 大小写
str0 = "Study Python From HaiCoder"
print("str0 =", str0.lower())
print("str0 =", str0.upper())
str0 = "嗨客网(HaiCoder)"
print("str0 =", str0.upper())
print("str0 =", str0.lower())
# 判断是否是全大写/小写
print("islower =", str0.islower())
print("isupper =", str0.isupper())
# 数字的判断
# isdecimal() 是否为十进制数字符,包括 Unicode 数字、双字节全角数字,不包括罗马数字、汉字数字、小数。
# isdigit() 是否为数字字符,包括 Unicode 数字,单字节数字,双字节全角数字,不包括汉字数字,罗马数字、小数。
# isnumeric() 是否所有字符均为数值字符,包括 Unicode 数字、双字节全角数字、罗马数字、汉字数字,不包括小数。
str0 = "1024"
print("isdigit =", str0.isdigit())
print("isnumeric =", str0.isnumeric())
str1 = "10241024102410241024102410241024102410241024"
print("isdigit =", str1.isdigit())
print("isnumeric =", str1.isnumeric())
s = "1.234"
print(s+' isdigit: ', s.isdigit())
print(s+' isdecimal: ', s.isdecimal())
print(s+' isnumeric: ', s.isnumeric())
s = "壹贰叁"
print(s+' isdigit: ', s.isdigit())
print(s+' isdecimal: ', s.isdecimal())
print(s+' isnumeric: ', s.isnumeric()) # True
# 判断是否是数字和字母的组合
s0 = "HaiCoder1024"
print("isanum =", s0.isalnum())
# 判断是否是字母
s0 = "HaiCoder"
print("isalpha =", s0.isalpha())
# 判断首字母是否大写,其他字母是小写
s0 = "我的琳达MyLinda"
print("istitle =", s0.istitle()) # False
# 判断是否是空格
s0 = " "
print("isspace =", s0.isspace())
# 去除字符串两边特定字符
s0 = " 123 123 "
print("strip =", s0.strip())
s0 = "123 123 "
print("strip =", s0.strip())
s0 = " 123 123"
print("strip =", s0.strip())
# 去除左边特定字符
s0 = " 123 123"
print("lstrip =", s0.lstrip())
# 去除右边特定字符
s0 = " 123 123"
print("rstrip =", s0.rstrip())
# 使用 strip() 函数,去除字符串的指定字符
s0 = "python, python"
s0 = s0.replace("python", "Golang")
print("replace =", s0)
格式化
if __name__ == '__main__':
print()
# 格式化
s0 = "Name : {name}, Site : {site}".format(name="Demo", site="www.demo.net")
print("s0 =", s0)
s0 = "{}, {}".format("Hello", "HaiCoder")
print("s0 =", s0)
s0 = "{1}, {0}, {1}".format("HaiCoder", "Hello")
print("s0 =", s0)
# { [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }
# align
# < 数据左对齐
# > 数据右对齐
# = 数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效
# ^ 数据居中,此选项需和 width 参数一起使用
# sign
# + 正数前加正号,负数前加负号
# - 正数前不加正号,负数前加负号
# 空格 正数前加空格,负数前加负号
# #号
# # 对于二进制、八进制和十六进制,使用此参数,各进制数前会分别显示 0b、0o、0x 前缀;反之则不显示前缀
# type
# s 对字符串类型格式化
# d 十进制整数
# c 将十进制整数自动转换成对应的 Unicode 字符
# e 或者 E 转换成科学计数法后,再格式化输出
# g 或 G 自动在 e 和 f(或 E 和 F)中切换
# b 将十进制数自动转换成二进制表示,再格式化输出
# o 将十进制数自动转换成八进制表示,再格式化输出
# x 或者 X 将十进制数自动转换成十六进制表示,再格式化输出
# f 或者 F 转换为浮点数(默认小数点后保留 6 位),再格式化输出
# % 显示百分比(默认显示小数点后 6 位)
s0 = "{0:->+#12.6}, {0:*<+#12.6}, {0:*^+#14.6}, {1:#x}, {1:#X}".format(1.12345678, 0x12345678) # 四舍五入
print("s0 =", s0)
# 格式化数字
# 3.1415926 {:.2f} 3.14 保留小数点后两位
# 3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
# -1 {:+.2f} -1.00 带符号保留小数点后两位
# 2.71828 {:.0f} 3 不带小数
# 5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
# 5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
# 10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
# 1000000 {:,} 1,000,000 以逗号分隔的数字格式
# 0.25 {:.2%} 25.00% 百分比格式
# 1000000000 {:.2e} 1.00e+09 指数记法
# 13 {:>10d} 13 右对齐 (默认, 宽度为10)
# 13 {:<10d} 13 左对齐 (宽度为10)
# 13 {:^10d} 13 中间对齐 (宽度为10)
# 11 '{:b}'.format(11) 1011 二进制
# 11 '{:d}'.format(11) 11 十进制
s0 = '{0:.2%},{1:.2%}'.format(0.25, 25) # 25.00%,2500.00%
print("s0 =", s0)
if __name__ == '__main__':
print()
# print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
# objects 要输出的对象,是复数形式,表示可以一次输出多个对象。输出多个对象时,用 , 分隔
# sep 用来间隔多个对象,默认值是一个空格
# end 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串
# file 要写入的文件对象,默认是标准输出
# flush 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新
course = "python"
module = "demo"
webSite = "www.baidu.com"
print("I am study ", course, " in ", module, " by ", webSite, sep=',')
print("I am study ", course, " in ", module, " by ", webSite)
print("I am study ", course, end='\t')
print("in Module ", module, end='\t')
print("by WebSite", webSite)
# %d,%i 转换为带符号的十进制形式的整数
# %o 转换为带符号的八进制形式的整数
# %x,%X 转换为带符号的十六进制形式的整数
# %e 转化为科学计数法表示的浮点数(e 小写)
# %E 转化为科学计数法表示的浮点数(E 大写)
# %f,%F 转化为十进制形式的浮点数
# %g 智能选择使用 %f 或 %e 格式
# %G 智能选择使用 %F 或 %E 格式
# %c 格式化字符及其 ASCII 码
# %r 使用 repr() 将变量或表达式转换为字符串
# %s 使用 str() 将变量或表达式转换为字符串
# %10s 右对齐,占位符10位
# %-10s 左对齐,占位符10位
# %.2s 截取2位字符串
# %10.2s 10位占位符,截取两位字符串
# %% 文字%
site = 'HaiCoder'
print('%s has %d years old' % (site, 18))
score = 99.85
print('score = %f' % score) # 99.850000 默认保留小数点后6位
print('score = %.1f' % score) # 99.8 保留小数点后1位,不四舍五入
print('score = %F' % score)
print('score = %.1F' % score)
# %Nd 默认右对齐
# %-Nd 使用左对齐
num = 100241
num2 = 1024
print('score = %6d' % num)
print('score = %5d' % num)
print('score = %6d' % num2)
print('score = %-6d' % num2)
print('score = %06d' % num2)
# print字符串前面加f表示格式化字符串,加f后可以在字符串里面使用用花括号括起来的变量和表达式,
# 如果字符串里面没有表达式,那么前面加不加f输出应该都一样
编解码
if __name__ == '__main__':
print()
# 编码
# str.encode(encoding='UTF-8',errors='strict')
# encoding 要使用的编码,默认值 UTF-8
# errors 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个 UnicodeError
# 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值
# 错误处理方式 说明
# strict 遇到非法字符就抛出异常
# ignore 忽略非法字符
# replace 用?替换非法字符
# xmlcharrefreplace 使用 xml 的字符引用
s0 = "嗨客网(HaiCoder)"
byteRes0 = s0.encode() # 对该变量进行编码,并返回 bytes 类型的变量
print("byteRes0 =", byteRes0)
s1 = "嗨客网(HaiCoder)"
byteRes1 = s1.encode('gbk', 'strict')
print("byteRes1 =", byteRes1)
# 解码
# str.decode(encoding='UTF-8',errors='strict')
# encoding 要使用的解码,默认值 UTF-8
# errors 设置不同错误的处理方案。默认为 ‘strict’,意为解码错误引起一个 UnicodeError
# 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值
s0 = byteRes0.decode()
print("s0 =", s0)
s1 = byteRes1.decode('gbk')
print("s1 =", s1)