美文网首页Python
[Python]基础-字符串

[Python]基础-字符串

作者: DDuncan | 来源:发表于2020-01-22 18:30 被阅读0次

    一、Python3 字符串的编码

    编码 说明
    ASCII 编码 只有大小写英文字母、数字和一些符号等127个字符
    (专用) 中文的GB2312编码
    日文的Shift_JIS编码
    Unicode(统一) u'字符串'
    \u四位十六进制数

    Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用

    byt = b'Python' bytes数据,只接受 ASCII 码这个范围的字符

    • 编码
      需要将文件保存到外设或进行网络传输时,就要进行编码转换,将字符转换为字节,以提高效率@二进制文件(b' ')

    .encode(encoding='UTF-8',errors='strict') 将字符转换为字节 (默认编码是 UTF-8)
    .decode(encoding='UTF-8',errors='strict') 将字节转换为字符
    说明:出错默认报ValueError,除非errors是ignore或replace


    知乎:木头人

    二、创建字符串

    可以使用单引号、双引号、三单引号和三双引号
    三引号可以定义多行字符串

    注意:当我们字符串中包含单引号(')使用双引号创建字符串;
    字符串包含双引号(")使用单引号创建。三个引号(''')里面能出现单引号双引号回车键等,三个引号中字符串会保持传入的格式

    三、操作字符串

    注意:所有的字符串函数都是有返回值的,默认inplace = False

    • 特性
      属于序列,具有序列的通用操作

    索引(indexing)
    切片(slicing)
    迭代(iteration)
    加(adding)
    乘(multiplying)

    • 查/改/增/删

    str[start: end: step] 切片
    str[::2] 隔两个截取
    str[::-1]倒序
    find(sub [,start [,end]]) 返回索引值,没有返回值为-1
    rfind() 从右向左查同find
    index(sub [,start [,end]]) 查不到会报错
    rindex() 从右向左返回索引值同index

    改(替换)/增(拼接)

    replace(old, new[, count]) 指定字符替换为新的字符,可指定个数
    expandtabs([n]) 将字符串中(tab符号)\t转换成n个空格
    format_map() 格式化输出,以字典形式存储key-value数据
    maketrans()+translate(table [,deletechars]) 根据参数table=maketrans给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到deletechars参数中


    + 拼接
    .join([str1, str2])

    strip() 移除字符串头尾指定的字符(默认为空格或换行符)或字符序列(多个字符亦可)
    lstrip() 移除字符串头
    rstrip 移除字符串尾

    • 排序/遍历/统计

    统计

    len()
    .count(sub[, start[, end]]) 区间内某个字符的个数

    • 内置函数:判断

    in/not in
    isalnum() 是否只包含字母或数字
    isalpha() 是否只包含字母
    isdecimal() 是否是十进制正整数
    isdigit() 是否只包含数字
    isdentifier() 是否是python中的标识符
    isupper() 字符串字母是不是都是大写
    islower() 字符串字母是不是都是小写
    isnumeric() 是不是数字,无论中文,只要是数字就能判断
    isprintable() 是否可打印
    isspace() 是否都是空格,tab等
    istitle() 是否所有字符首字母大写
    startswith(prefix[, start[, end]]) 是否是字符串或字符开头
    endswith(suffix[, start[, end]]) 是否是字符串或字符结尾

    • 内置函数:格式化字符串+转义

    格式化

    '%s%s'%(str1,str2)
    '{}{}'.format(str1, str2)


    capitalize() 字符串首字母大写
    title() 字符串中所有单词的首字母大写
    upper() 全部大写
    lower() 全部小写
    swapcase() 大小写互换


    center() 居中对齐:指定宽度和填充字符(注意:如果fillchar超过1个长度或为非字符串或为汉字,则会报出异常)
    ljust()/rjust() 指定字符宽度填充(左/右对齐)
    zfill() 右对齐:不足宽度补零

    %之后

    示例:str = format('%02d-%02d-%s' %(a, b, c))

    + 右对齐,正数前加正号,负数前加负号
    - 左对齐,正数前无符号,负数前加负号
    空格 右对齐;正数前加空格,负数前加负号
    0 右对齐,正数前无符号,负数前加负号,用0填充
    %s 字符串
    %r 字符串采用repr()显示
    %c 单个字符
    %b 二进制整数 bin
    %i 十进制整数 int
    %o 无符号八进制 oct
    %x 无符号十六进制 hex
    %d 整数
    %f 浮点数
    %u 无符号整数
    %e 科学记数法

    转义

    r" "u" " 转义声明(大写R亦可)(多用于文件地址的输入和正则表达式)
    \(置于行尾) 表示续行
    \\ 表示\符号
    \' 单引号
    \" 双引号
    \b 退格(Backspace)
    \e 转义
    \n 换行
    \v 纵向制表符
    \t 横向制表符Tab
    \r 回车(光标重新回到本行开头)
    (补充:空行为\r\n)
    \f 换页

    • 内置函数:分割字符串(转化为列表)

    split([sep [,maxsplit]]) 默认空格作为分隔符
    rsplit() 从右往左开始分割
    partition(sep) 分割点为首次出现sep的地方
    rpartition() 分割点为最后一次出现sep的地方
    splitlines([keepends]) keepends是一个bool值,如果为真每行后而会保留行分割符

    • 提取字符串数据(优先考虑正则表达式)

    int(''.join(char for char in example if str.isdigit())) 提取数字
    (''.join(char for char in example if str.alpha())) 提取字母

    四、拓展

    • 正则表达式模块re(Regular Expression)

    re.findall('\d+', str) 寻找str中所有的数字及其1~n扩展

    常用正则表达式
    示例

    注意:re库在进行字符串匹配时会默认采用“贪婪匹配”,也就是说会返回符合条件的最长字符串。通过在操作符后增加一个“?”可以将正则式变成最小匹配:


    贪婪匹配与最小匹配

    References

    https://zhuanlan.zhihu.com/p/2887969char

    相关文章

      网友评论

        本文标题:[Python]基础-字符串

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