美文网首页
python笔记(五)数据类型 - 字符串

python笔记(五)数据类型 - 字符串

作者: 艺术家可达鸭 | 来源:发表于2018-12-15 19:15 被阅读0次
    'hello'*3 # 重复 hello 三次
    'hello' + 'world' # 连接字符串
    
    ('hello'  # 字符串分行
    'world')
    str(obj)  # 调用对象的 __str__ 方法,返回一个字符串
    

    原始字符串

    ASCII 中的字符和 RE 中的特殊字符可能出现冲突,比如\b在ASCII中表示退格,在 RE 中表示单词边界。
    为了让 python 不将\b作为退格,RE 中使用\\b\\\转化为普通字符,这样 python 就不会去转义字符 b 了,而 RE 就会来解释这个\b
    所以 RE 中表示一个普通\,需要使用\\\\
    原始字符串就是希望 python 不解释\,所有\都是普通字符,而这个普通字符会被 RE 解释。
    r'\\'表示两个 ASCII 中的普通字符\

    有一个情况很奇怪,如果我希望字符串中的所有\都是普通字符,r'C:\Users\kinux\Music\music\',这是有问题的。最后一个\会转义',不清楚为什么。所以正确的写法是C:\\Users\\kinux\\Music\\music\\,不使用原始字符串。

    字符串格式化与拼接

    C语言风格的格式化

    虽然这种风格已经不推荐使用了,但是在别的语言中还会遇到,而且我不熟练,所以记一下

    # 只需要记得常用的 %d,%s,%f 即可,这里用 %s 举例
    # 保留小数点后 4 位,不够的用 0 补足,超过的话就四舍五入
    print("%.*f" % (4, 1.2))
    # 保留小数点后 4 位;字符串总长度 10,不够在左边用空格补足,超过的话不会截断
    print("%10.4f" % (1.234567))
    

    rjust/ljust/center

    # 把字符创扩充到 20 个字符,不够的用 = 补足,超过的话不会截断;原字符串位于新子串的右边
    'hello'.rjust(20,'=')
    # '===============hello'
    

    format方法格式化

    format 可以接受任意类型的参数,但返回的一定是字符串
    两个{,两个%,可以用来转义,比如{{表示一个没有特殊意义的{

    # 简单用法
    name='Jerry'
    age=12
    print('{},{}'.format(name,age))
    print('{0[1]},{0[2]}'.format([name,age]))
    print('{name},{age}'.format(name=name,age=age))
    
    # 数字精度与进制
    print('{:.2f}'.format(31.31412))
    # 以二进制的形式打印
    # 如果不加#,字符串开头就不会有 0b
    print('{:#b}'.format(23))
    # 八进制、十进制、十六进制分别是 o、d、x
    
    # 对齐
    # 中间对其,字符串总长度 10
    print('{:^10}'.format('abc'))
    # 左对齐,用 =,而不是空白来填充
    print('{0:=<10}'.format(1.234))
    
    # 其它
    # 给数字加千位分隔符,每三个数字加一个逗号,用在表示金额的数字上
    print('{:,}'.format(123456789))
    # 转换成百分比,保留四位小数
    print('{:.4%}'.format(0.1))
    

    字符串拼接

    • +:用于最简单的字符串连接
    • join(seq) 方法:以指定字符串作为分隔符,将 seq 中所有的元素合并为一个新的字符串
    • format 方法

    字符串搜索与替换

    这些方法都不支持正则表达式

    endswith(suffix, beg=0, end=len(string)) # 返回的是一个 bool
    startswith(str, beg=0,end=len(string))
    find(str, beg=0 end=len(string)) # 存在则返回下标,不存在返回 -1
    rfind(str, beg=0,end=len(string)) # 同上,但是是从右边开始搜索
    index(str, beg=0, end=len(string)) # 同上,但是不存在则抛出异常
    rindex( str, beg=0, end=len(string))
    count(str, beg= 0,end=len(string)) # 返回指定字符串出现的次数
    replace(old, new [, max])
    

    字符串判断与转换

    # 这些判断都要求字符串长度大于 0,否则直接返回 False
    isspace()
    islower()
    isupper()
    isalpha() # 字母
    isdigit() # 数字
    isalnum() # 字母或数字
    
    split(str="", maxsplit=-1) # maxsplit表示要做几次分割,比如做一次,则会把原字符串切成两个
    # 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
    splitlines([keepends])
    upper()
    lower()
    strip()  # 去字符串首尾空格
    lstrip()
    rstrip()
    
    encode('utf8') # 用 utf8 把字符串编码成字节(Bytes 类型对象)
    # 用 Bytes 类型对象的 decode 方法可还原
    

    相关文章

      网友评论

          本文标题:python笔记(五)数据类型 - 字符串

          本文链接:https://www.haomeiwen.com/subject/cnoahqtx.html