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下编辑文本中的’\r’:‘hello world \r\n’

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)

  

 

posted @ 2018-06-18 22:01  水如如  阅读(135)  评论(0编辑  收藏  举报