❶ 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到.中間的任意內容,空字元也行