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

it2022-06-23  86

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

一、拆分字符串

问题引入:

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

       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


最新回复(0)