python学习随笔(三)_字符串,,字符串*** 是由一


字符串***
是由一个个字符组成的有序的序列,是字符的集合
使用单引号,双向引号,三引号引住的字符序列 #三引号中可以放sql语句
字符串是不可变对象

字符串元素访问
字符串支持使用索引访问
有序列的字符集合,字符序列
字符串可以是个容器,可以被一个个迭代出来,因为它是有顺序的

字符串join连接*
"string".join(iterable) -> str
将可迭代对象连接起来,使用string作为分隔符
可迭代对象本身元素都是字符串
***返回一个新字符串
#‘,‘.join() #join后接字符串,‘‘中可以自定义间隔符
#‘,‘.join(map(str,range(10)))

字符串+连接 #+ -> str
#将2个字符串连接在一起
#字符串相加产生新的字符串返回值为none

字符串分割*
#分割字符串的方法分为2类
#split系:将字符串按照分隔符分割成若干字符串,并返回列表
#partition系:将字符串按照分隔符分割成2段,返回这2段和分隔符的元组
split(sep=None, maxsplit=-1) -> list of strings #从左向右
#sep可以改分隔符默认是空白字串作为分隔符
# maxsplit 指定分割的次数,-1 表示遍历整个字符串
##返回类型是什么很重要 决定可不可以join
 #rsplit() #从右向左切,用法一样

splitlines([keepends]) -> list of strings
#按行切一行行切
#keepends 指的是是否保留行分隔符
# 行分隔符包括\n、\r\n、\r等

#常见换行符:/r,/n ,/r/n
#空白分隔符:空格,/t,/n

partition(sep) -> (head, sep, tail)
#可以split的一个特例只切一回,带分隔符,但切完返回的是元组
# 从左至右,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组;如果没有找到分隔符,就返回头、2个空元素的三元组
#sep分隔符字符串必须指定,不可以用空字符

切字符串比较常用:比如用在分行,文件路径路径,电话区号等等.

字符串大小写
upper() #全大写
lower() #全小写
#大小写,做判断的时候用
swapcase() #交互大小写

字符串排版
title() -> str #标题的每个单词都大写
capitalize() -> str #首个单词大写
center(width[, fillchar]) -> str
#width 打印宽度
#fillchar 填充的字符
#格式:例:a.center(20,‘@‘)
zfill(width) -> str
#width 打印宽度,居右,左边用0填充
ljust(width[, fillchar]) -> str 左对齐
rjust(width[, fillchar]) -> str 右对齐
#中文用的少,了解一下

字符串修改***
(替换)replace(old, new[, count]) -> str #(替换)
#字符串中找到匹配替换为新子串,返回新字符串
#count表示替换几次,不指定就是全部替换
(删除) strip([chars]) -> str #(两端去除)
#从字符串两端去除指定的字符集chars中的所有字符
#如果chars没有指定,去除两端的空白字符
lstrip([chars]) -> str #从左开始
rstrip([chars]) -> str #从右开始

字符串查找*** #返回索引号 #格式num.find(‘s‘,0,6)不指定数字从头开始找
find(sub[, start[, end]]) -> int
#在指定的区间[start, end),从左至右,查找子串sub。找到返回索引,没找到返回-1
rfind(sub[, start[, end]]) -> int
#在指定的区间[start, end),从右至左,查找子串sub。找到返回索引,没找到返回-1
index(sub[, start[, end]]) -> int
#在指定的区间[start, end),从左至右,查找子串sub。找到返回索引,没找到抛出异常ValueError
rindex(sub[, start[, end]]) -> int
#在指定的区间[start, end),从左至右,查找子串sub。找到返回索引,没找到抛出异常ValueError
count(sub[, start[, end]]) -> int
#在指定的区间[start, end),从左至右,统计子串sub出现的次数
len(string) #返回字符串的长度,即字符的个数
时间复杂度:index和count方法都是O(n),随着列表数据规模的增大,而效率下降


字符串判断*** #返回值为布尔型
#endswith(suffix[, start[, end]]) -> bool
#在指定的区间[start, end),字符串是否是suffix结尾
#startswith(prefix[, start[, end]]) -> bool
#在指定的区间[start, end),字符串是否是prefix开头
字符串判断 is系列
isalnum() -> bool 是否是字母和数字组成
isalpha() 是否是字母
isdecimal() 是否只包含十进制数字
isdigit() 是否全部数字(0~9)
isidentifier() 是不是字母和下划线开头,其他都是字母、数字、下划线
islower() 是否都是小写
isupper() 是否全部大写
isspace() 是否只包含空白字符

字符串格式化(c风格比较杂乱需要记得比较多)
字符串的格式化是一种拼接字符串输出样式的手段,更灵活方便
#join拼接只能使用分隔符,且要求被拼接的是可迭代对象
#+ 拼接字符串还算方便,但是非字符串需要先转换为**字符串**才能拼接
在2.5版本之前,只能使用printf style风格的print输出
#printf-style formatting,来自于C语言的printf函数
格式要求
#占位符:使用%和格式字符组成,例如%s、%d等
#s调用str(),r会调用repr()。所有对象都可以被这两个转换。
#占位符中还可以插入修饰字符,例如%03d表示打印3个位置,不够前面补零
#format % values,格式字符串和被格式的值之间使用%分隔
#values只能是一个对象,或是一个和格式字符串占位符数目相等的元组,或一个字典


字符串格式化***(运用format()函数格式化,python推荐版本)
*format函数格式字符串语法——Python鼓励使用*
#"{} {xxx}".format(*args, **kwargs) -> str
#args是位置参数,是一个元组
#kwargs是关键字参数,是一个字典
#花括号表示占位符
#{}表示按照顺序匹配位置参数,{n}表示取位置参数索引为n的值
#{xxx}表示在关键字参数中搜索名称一致的
#{{}} 表示打印花括号
#位置参数
"{}:{}".format(‘192.168.1.100‘,8888),这就是按照位置顺序用位置参数替换前面的格式字符串的占位符中
#关键字参数或命名参数
"{server} {1}:{0}".format(8888, ‘192.168.1.100‘, server=‘Web Server Info : ‘) ,位置参数按照序号匹配,
#关键字参数按照名词匹配
? #访问元素
"{0[0]}.{0[1]}".format((‘magedu‘,‘com‘))
#对象属性访问
from collections import namedtuple
Point = namedtuple(‘Point‘,‘x y‘)
p = Point(4,5)
"{{{0.x},{0.y}}}".format(p)

#对齐
‘{0}*{1}={2:<2}‘.format(3,2,2*3) #冒号前面是索引号
‘{0}*{1}={2:<02}‘.format(3,2,2*3) #可以写成{:0<3}.format(6),对齐空的位置补0,0可以换成其他字符也支持
‘{0}*{1}={2:>02}‘.format(3,2,2*3) #与上一个相反
‘{:^30}‘.format(‘centered‘) #代表中间对齐
‘{:*^30}‘.format(‘centered‘) #中间对齐0补空白位置
#进制
"int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42) #0是索引号,d十进制,x十六进制,o八进制,b二进制
"int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) #前面加成ox...
把下面的数转换输出:
octets = [192, 168, 0, 1]
‘{:02X}{:02X}{:02X}{:02X}‘.format(*octets) #*octets,是把上面的列表解开放到format里转换成16进制
#浮点数
print("{}".format(3**0.5)) # 1.7320508075688772
print("{:g}".format(3**0.5)) # 1.73205
print("{:f}".format(3**0.5)) # 1.732051
print("{:10f}".format(3**0.5)) # 右对齐#
print("{:2}".format(102.231)) # 宽度为2
print(“{:.2}”.format(3**0.5)) # 1.7 2个数字
print("{:.2f}".format(3**0.5)) # 1.73 小数点后2位
print("{:3.2f}".format(3**0.5)) # 1.73 宽度为3,小数点后2位
print("{:3.3f}".format(0.2745)) # 0.275 #%3 控制宽度
print("{:3.3%}".format(1/3)) # 33.333% #%.3 控制精度

python学习随笔(三)_字符串

评论关闭