问题引入:
把某个字符串依据分隔符拆分,该字符包含不同的多种分隔符,如下
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)
转载于:https://www.cnblogs.com/mesunyueru/p/9196457.html