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    控制精度

转载于:https://www.cnblogs.com/springquanquan/p/9460126.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值