python高级编程技巧,如何判断字符串A是否以字符串B开头或结尾

骨子里案例

某文件系统目录下有一雨后冬笋文件: quicksort.c graph.py heap.java install.sh
stack.cpp ……编写程序给当中全体.sh文件和.py文件加上客商可实践权限。

缓慢解决方案:使用字符串的str.startswith()和str.endswith()方法。(注:四个相配时参数使用元组。)其现实代码如下:

# -*- coding: utf-8 -*-import os, stat# 读入当前文件目录下的所有文件并通过列表解析读取指定文件至列表files_list = [name for name in os.listdir if name.endswith(('.sh', '.py'))]# 修改文件权限for file in files_list: os.chmod(file, os.stat.st_mode | stat.S_IXUSR)

此实际案例适用于Linux系统,故此不展现上述代码运转结果。

一. 如何拆分含有八种分隔符的字符串

实则案例:

  1. 咱俩要把某部字符串依靠分隔符号拆分分裂的字段,该字符串包括二种分裂的分隔符,比如:
    拆分 s = ‘ab;cd|efgh|hi,jkl|mntopq;rst,uvwtxyz’
    其中<,>,<;>,<|>,<t>都是分隔符号
焚林而猎方案:

措施1. 连接使用 str.split() 方法,每一回管理一种分隔符号。
办法2. 施用正则表达式的 re,split()
方法,一次性拆分字符串。(推荐介绍使用

代码示例:
# _*_ coding:utf-8 _*_
# @Author   : TianYu
# @Time     : 2017/10/12 15:55
# @File     : 拆分含多种分隔符的字符串.py

#拆分 s = 'ab;cd|efgh|hi,jkl|mntopq;rst,uvwtxyz'
#其中<,>,<;>,<|>,<t>都是分隔符号

#单一分隔符
s = 'liushuo 15196 0.0 0.0 22565 2872 pts/11 R+ 13:50 0:00 ps aux'#提取每个字段
s.split() #空白字符:空格、t、n等都是
print(s.split())
#['liushuo', '15196', '0.0', '0.0', '22565', '2872', 'pts/11', 'R+', '13:50', '0:00', 'ps', 'aux']

#方法 1 :连续使用str.split()方法,每次处理一种分隔符(不推荐,不优)
s = 'ab;cd|efgh|hi,jkl|mntopq;rst,uvwtxyz'
res = s.split(';')
print(list(map(lambda  x: x.split('|'),res)))#结果变成二维列表
#[['ab'], ['cd', 'efgh', 'hi,jkl', 'mntopq'], ['rst,uvwtxyz']]

#降维:二维变一维
t = [] #临时列表
print(list(map(lambda  x: t.extend(x.split('|')),res)))# [None, None, None]
print(t) #['ab', 'cd', 'efgh', 'hi,jkl', 'mntopq', 'rst,uvwtxyz']

res = t
t = []
print(list(map(lambda  x: t.extend(x.split(',')),res)))#[None, None, None, None, None, None]
print(t)#['ab', 'cd', 'efgh', 'hi', 'jkl', 'mntopq', 'rst', 'uvwtxyz']

#总结规律得出一个函数
def mySplit(s, ds):
    res = [s]

    for d in ds:
        t = []
        list(map(lambda x: t.extend(x.split(d)), res))
        res = t
    return [x for x in res if x] #过滤空字符串(当字符串中出现连续的分隔符时会产生空字符串)

s = 'ab;cd|efgh|hi,jkl|mntopq;rst,uvwtxyz'
print(mySplit(s,';,|t'))

#方法 2 : 使用正则表达式的re.split()方法,一次性拆分字符串(推荐使用)
import re

s1 = 'ab;cd|efgh|hi,jkl|mntopq;rst,uvwtxyz'
print(re.split('[,;t|]+', s1))

二. 怎么着剖断字符串 a 是还是不是以字符串 b 开始或最终

实在案例:

  1. 某文件系统目录下有一文山会海文件:
    quicksort.c
    graph.py
    heap.java
    install.sh
    stack.cpp
    ……
    编写程序给内部具备 .sh 文件和 .py 文件加上顾客可进行权限
涸泽而渔方案:

1.行使字符串的str.startswith()str.endswith()方法
瞩目:七个匹配时参数使用元组

发表评论

电子邮件地址不会被公开。 必填项已用*标注