❶ python 正则是什么意思
Python正则就是 Python正则表达式
可以这样理解:
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
就是你想在字符串中寻找你想要的子字符串.例如
你想匹配 "锄禾日当午,汗滴禾下土" 里的 "日当午岩姿" 日当午就是你的正则表达式形式者闹.
python的re 模块使 Python 语言拥有全部的正则表达式首枣罩功能。
简单的代码:
importre
print(re.match('www','www.runoob.com').span())
这个代码就是你匹配网址中有没有正则表达式"www"!
❷ 用python使文件名按照一定规则批量重命名
所用模块:import os
(一)打开文件夹,获得旧文件名
path=r"D:\exp\resultdata" //文件夹途径
for (root, dirs, files) in os.walk(path):
os.walk(path)//遍历D:\exp\resultdata下文件
(二)获得新文件名(如何打开一个文件)
一御团般新文件名都保存在一个文件中
new_names_files=open('文件名.txt','r')
content=open('文件名.txt','r')(此时content是一个含有所有new name 的列表)
注意:对新名字(字符串)会有一些操作
(1)对文件名(字符)的分割
用split()进锋滚行分割
a=''wer.werrew/"
(2)list 添加新的元素、
用append()进行添加
(3)字典添加新的元素
用update()进行添加
实例:
(三)重命名
利用os.rename()函数
实例:旧名字与新名字的数字相对
file=['1.max','2.max'……]//旧名字
for file in files:
oldname = os.path.join(root,file)
namesp=file.split('.')
镇基橘 new_namesp=d[int(namesp[0])]//数字相对
newname = os.path.join(root,new_namesp)
os.rename(oldname,newname)
❸ python的正则表达式
1,正则表达式的一些内容
正则表达式主要是用来匹配文本中需要查找的内容,例如在一片文章中找出电话号码,就中国的来说11位纯数字(不说座机),则使用"d{11}" 意味匹配数字11次,就能准确的查找出文本中的电话号码. 还有就是在编写网络爬虫的时候需要提取很多超链接再次进行爬取,使用正则表达式就很方便.直接匹配http开头就行,当然也可以洞拍使用beautifulsoup的select方法.
看下面的程序看看正则表达提取文本中的邮箱:
w 匹配字母,数字,下划线
+ 匹配1次或者多次
re是正则表达式的工具包,工具包出错的话在anaconda的命令行输入"pip install re"安装,其他的工具包也是如此.
re.compile()中的r示意不是转义字符,也就是保持后面字符串原样,findall返回一个列表.下面还有一个版本的程序略有不同.
compile的另一个参数re.IGONORECASE(忽略大小写),还可以是re.DORALL,多行模式,具体功能也是模糊不清,不过在使用通配符 . 匹配的时候加上re.DOTALL参数能够匹配换行.如果希望忽略大小写和多行模式都开启可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .
表达式使用( ),对匹配到的内容分为3组 也就是(w+)出现字母,数字,下划线一次或多次,这个分组枝衫就是下面使用match对象的grou()方法的时候的参数.不给参数和参数0都是得到整个匹配到的内容, 参数1得到第一个括号匹配到的内容,以此类推参数2和3,如果没有括号分组的话使用参数会出现错误.
search( )查找和正则式匹配的内容,只匹一次后面的那个找不到.返回一个match对象
w 匹配字母纳搭羡,数字,下划线
W 匹配字母,数字.下划线之外的所有字符
d 匹配数字
D 匹配非数字
s 匹配空格,制表符,换行符
S匹配除空格制表符,换行符之外的其他字符
[ .... ]定义自己的匹配,如[aeiouAEIOU ]匹配所有的元音字母,注意不是匹配单词.
{最少次数,最多次数},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默认为匹配最多次数(贪心匹配),非贪心模式在后面加上问号
? 可选 0次或者1次吧
+匹配1次或多次
*匹配0次或者多次
^ 判断开头 ^d 如果待匹配串是数字开头则返回第一个数字
$判断结尾 d$ 如果待匹配串是数字结尾则返回最后一个数字
. 通配符,匹配除换行之外的所有字符
d{11} 匹配数字11次
. * 匹配所有字符除 换行
[a-zA-Z0-9._%+-] 小写和大写字母、数字、句点、下划线、百分号、加号或短横
[a-zA-Z]{2,4} 匹配字母 2 - 4次
❹ 如何在python中用正则表达式批量修改文件名
没有用过这个软件,给你点思路,你根据软件来测试一下
如:
原文件名为:
1-照片一号文件夹,2-照片二塌基燃号文件夹
要改成:
41-照片一号文件锋岩夹,42-照片二号文件夹
在软件里可能会有“需要改的文件名”,并且可以用正则表达式,你可以输入:
“*照片*号文件夹”
在输入“更改后的文件名”:“4*照片*号文件夹”
可能有是否全部替换的选项,你可以先试团虚一个或者两个。
说明一下,*号代表匹配其他的字符。
❺ Python如何正则表达式匹配固定搭配的文本文件名文件名
abc-bh(?:\.\d+)+\.txt
❻ 如何在python中用正则表达式批量修改文件名
importre
importos
defget_file_list(folder):
file_list=[];
forroot,dirs,filesinos.walk(folder):
forfinfiles:
path=root+os.path.sep+f
file_list.append(path)
returnfile_list
defget_re_file_list(file_list,re_rule):
file_list_re=[]
forfileinfile_list:
ifre.search(re_rule,file):
file_list_re.append(file)
returnfile_list_re
defrename2new_file_list(file_list_re,re_rule,new_str):
re_c=re.compile(re_rule)
new_file_list=[]
foriinrange(0,len(file_list)):
new_base_name=re_c.sub(new_str,file_list[i][file_list[i].rindex(os.sep):])
new_full_path=file_list_re[i][:file_list_re[i].rindex(os.sep))+os.sep+base_name
new_file_list.append(new_full_path)
returnnew_file_list
defrename2list(old_list,new_list):
foriinrange(0,len(old_list)):
os.rename(old_list[i],new_list[i])
defmain():
root=""
re_rule=""
new_str=""
old_file_list=get_file_list(root)
re_file_list=(old_file_list,re_rule)
new_file_list=rename2new_file_list(re_file_list,re_rule,new_str)
rename2list(re_file_list,new_file_list)
if__name__=='__main__'
main()
❼ python关于文件名*
python里面经常用到正则表达式里的符号,*也是其中的一个正则符号,就是表示c到.中间的任意内容,空字符也行