python 遍历文件夹,用正则表达式字符串匹配找出符合要求的文件/文件夹、拷贝文件

找出文件名具有一定格式的文件:

import os
import re

path = "/root"
targetDir='/root/result' 

def getfilelist(strn):
    names=[]
    for dirpath, dirnames, filenames in os.walk(path):
        for filepath in filenames:
#             image_name=os.path.join(dirpath, filepath)#获取文件的全路径
            image_name=filepath
            str1 = re.compile(strn+'''(.*?).csv''')
            match_obj = re.findall(str1,image_name)
            if match_obj:
                print(image_name)
                names.append(image_name)
#             shutil.copy(image_name,  targetDir) #复制到另一个路径
    return names

getfilelist('hello')

这里根据自己的情况更改正则表达式:str1 = re.compile(strn+'''(.*?).csv''')

我本来这里的意思是找以‘python’开头,以‘.csv’结尾的文件,但是按照上面的情况,可能会将以下结果都匹配到:

['hello1.csv', 'hello3.csv', '你好hello2.csv', 'hellopython_1819你好.csv', '_hello_1517.csv123']

匹配到的结果是包含‘hello’,包含‘.csv’。

如果要找到以‘hello’开头,以‘.csv’结尾的文件,可以做这样的更改:str1 = re.compile('^'+strn+'''(.*?).csv$''') ,这个时候我们匹配到的结果就是:

['hello1.csv', 'hello3.csv', 'hello_1819你好.csv']

如果要找到以‘hello’开头,以‘.csv’结尾,并且后缀名的前面为数字的文件,可以做这样的更改:str1 = re.compile('^'+strn+'''(.*?)/d.csv$''') ,现在的匹配结果为:

['hello1.csv', 'hello3.csv']

我只列举了几种情况,这是正则表达式的内容,想要知道情况可以去搜索正则表达式哦

 

 

 

“当你的才华还撑不起你的野心的时候,你就应该静下心来学习”

以后这句话将会出现在我的每一篇博文中,用于提醒我自己,静下来好好学习。

### 回答1: 使用 Python 的 re 模块可以方便地实现正则表达式字符串截取。下面是一个简单的示例: ```python import re # 待匹配的字符串 text = "Hello, my name is John. My email is john@example.com." # 使用正则表达式查找电子邮件地址 match = re.search(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text) if match: # 输出匹配到的电子邮件地址 print(match.group(0)) else: print("No email found.") ``` 在上面的示例中,使用 re.search() 函数查找字符串中的电子邮件地址。正则表达式 `\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b` 匹配符合电子邮件地址格式的字符串。如果匹配成功,使用 match.group(0) 输出匹配到的电子邮件地址。 ### 回答2: Python中使用正则表达式进行字符串截取非常方便。我们可以使用re模块来实现正则表达式的匹配和提取。 首先,我们需要导入re模块:import re 然后,我们可以使用re模块中的findall函数来匹配字符串中与正则表达式相匹配的部分。findall函数的调用方式是re.findall(pattern, string)。 例如,假设我们要从以下字符串中提取出所有的数字:string = "I have 10 apples and 5 oranges." 我们可以使用正则表达式"\d+",其中"\d"表示匹配数字字符,"+"表示匹配一个或多个。对应的Python代码如下: ``` import re string = "I have 10 apples and 5 oranges." numbers = re.findall("\d+", string) print(numbers) ``` 运行结果会输出:['10', '5'],即找到了两个数字 '10' 和 '5'。 除了findall函数,re模块还提供了其他一些函数,如search函数用于在字符串中搜索匹配的部分,并返回第一个匹配的结果;match函数用于从字符串开头匹配;sub函数用于替换与正则表达式匹配的部分等。 综上所述,Python使用正则表达式进行字符串截取可以通过re模块中的函数实现,根据具体的需求选择合适的函数进行匹配和提取操作。 ### 回答3: 在Python中,我们可以使用正则表达式来截取字符串。Python提供了re模块,其中包含了处理正则表达式的函数和方法。 首先,我们需要导入re模块: import re 然后,我们可以使用re模块中的函数re.search()来搜索匹配的字符串。这个函数接收两个参数,第一个参数是正则表达式,第二个参数是要搜索的字符串。 例如,如果我们要截取一个字符串中的所有数字,可以使用以下代码: string = "hello123world" result = re.search("\d+", string) 这里的正则表达式"\d+"表示匹配一个或多个数字。如果找到了匹配的字符串,那么re.search()函数将返回一个匹配对象。我们可以通过调用匹配对象的group()方法来获取匹配的字符串。 例如,我们可以使用以下代码获取匹配的字符串: matched_string = result.group() print(matched_string) # 输出:123 除了re.search()函数,re模块还提供了其他的函数和方法来处理正则表达式,例如re.findall()函数可以查找所有匹配的字符串并返回一个列表。 总而言之,使用正则表达式可以帮助我们在字符串中截取想要的部分。通过学习和掌握re模块中的函数和方法,我们可以更加灵活地处理字符串截取的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值