• python进阶学习chapter04(字符串相关)


    • 拆分字符串(含有多个分隔符)
    • 去掉不需要的字符
    • 判断字符串的开头/结尾元素

    一、拆分字符串

    问题引入:

     把某个字符串依据分隔符拆分,该字符包含不同的多种分隔符,如下

           s = '12;;7.osjd;.jshdjdknx+'

           其中 ; . + 是分隔符

    方法一,不断使用str.split(),再用extend把序列不断添加到列表中

    append和extend的区别:https://www.cnblogs.com/subic/p/6553187.html

    def go_split(s, symbol):
        result = [s]
        for i in symbol:
            median = []
            # 普通方法
            # for x in result:
            #     median.extend(x.split(i)
            
            # 列表解析
            # [median.extend(y.split(i)) for y in result if y]
            
            # map高阶函数,map生成可迭代对象
            for z in map(lambda x: x.split(i), result):
                median.extend(z)
        
            # 以上三个方法都可以解决问题
            result = median
            
        # 去除空字符串
        return [x for x in result if x]
    
    if __name__ == "__main__":
        # 定义初始字符串
        s = '12;;7.osjd;.jshdjdknx+'
        # 定义分隔符
        symbol = ';./+'
        
        result = go_split(s, symbol)
        print(result)
    

      方法二、调用re的split方法一次性拆分所有

    import re
    
    
    def go_split(s, symbol):
        # 拼接正则表达式
        symbol = "[" + symbol + "]+"
        # 一次性分割字符串
        result = re.split(symbol, s)
        # 去除空字符
        return [x for x in result if x]
    
    
    if __name__ == "__main__":
        # 定义初始字符串
        s = '12;;7.osjd;.jshdjdknx+'
        # 定义分隔符
        symbol = ';./+'
        
        result = go_split(s, symbol)
        print(result)
    

      

    二、去掉不需要的字符

    问题引入:

    过滤用户输入中前后多余的空白字符‘    ++++abc123---    ‘

    过滤某windows下编辑文本中的’ ’:‘hello world ’

    1、去掉两端字符串:strip(),rstrip(),lstrip()

    s = '  -----abc123++++       '
     
    # 删除两边空字符
    print(s.strip())
     
    # 删除左边空字符
    print(s.rstrip())
     
    # 删除右边空字符
    print(s.lstrip())
    

      2、删除某个具体位置的字符:先切片再拼接

    s = 'abc:123'
    # 字符串拼接方式去除冒号
    new_s = s[:3] + s[4:]
    print(new_s)
    

      3、

    三、判断字符串是否以某个字符开头/结尾

    startwith()和endwith()结合列表解析式

    问题引入:

      某文件系统目录下有一系列文件:

        1.c

        2.py

        3.java

        4.sh

        5.cpp

        ......

      编写一个程序,给其中所有的.sh文件和.py文件加上可执行权限

    import os
    import stat
     
     
    def chmod_py(target_path):
        # 获得当前文件下目录文件
        file_l = os.linesdir(target_path)
         
        # startswith中拥有多个参数必须是元组形式,只需满足一个条件,返回True
        target_file = [name for name in file_l if name.startswith(('.sh', '.py'))]
         
        for file in target_file:
            # 给满足条件的文件所有者赋予执行权限
            os.chmod(file, os.stat(file).st_mod | stat.S_IXUSR)
     
     
    if __name__ == '__main__':
        # 目标目录
        target_path = '.'
         
        chmod_py(target_path=target_path)
    

      

  • 相关阅读:
    likely(x)与unlikely(x) __builtin_expect
    c++ ScopeExitGuard
    c++ 11 bind function
    boost shared_ptr weak_ptr
    PL/SQL:使用pragma restrict_references限制包权限
    Nginx的事件处理机制
    读书笔记-HBase in Action-第二部分Advanced concepts-(1)HBase table design
    谈谈工作
    [Java 8] (5) 使用Lambda表达式进行设计
    How to delete a large number of data in SharePoint for List when refreshing data?
  • 原文地址:https://www.cnblogs.com/mesunyueru/p/9196457.html
Copyright © 2020-2023  润新知