給定兩個檔案路徑
Z:\home\user\dfolder\NO,AG,GK.jpg
Z:\home\user\dfolder\NI,DG,BJ (1).jpg
目標是拆分每個字串并存盤到一個字典中
目前,我首先使用os.path.split來拆分路徑以獲取 s 串列
s=['NO,AG,GK.jpg','NI,DG,BJ (1).jpg']
并迭代拆分字串如下
all_dic=[]
for ds in s:
k=ds.split(",")
kk=k[-1].split('.jpg')[0].split("(")[0] if bool(re.search('\(\d \)', ds)) else k[-1].split('.jpg')[0]
nval={"f":k[0],"s":k[1],"t":kk}
all_dic.append(nval)
但是,我對一種regex方法或任何 1 班輪很好奇。
uj5u.com熱心網友回復:
使用正則運算式 行內串列決議的一個線性決議:
import re
s = ['NO,AG,GK.jpg', 'NI,DG,BJ (1).jpg']
keys = ['f', 's', 't']
all_dic = [{keys[k]: x for k, x in enumerate(
re.sub("(\s\(\d \))?(\.jpg)?", "", item).split(','))} for item in s]
print(all_dic)
->
[{'f': 'NO', 's': 'AG', 't': 'GK'}, {'f': 'NI', 's': 'DG', 't': 'BJ'}]
uj5u.com熱心網友回復:
好吧,我認為這是在不使用該split()函式的情況下獲得相同輸出的最簡單方法。
正則運算式只接受字母并將它們放在一個串列中,因此我們甚至不必拆分字串或從中洗掉 (1)。
import re
s=['NO,AG,GK.jpg','NI,DG,BJ (1).jpg']
all_dic = []
for ds in s:
regex = '[a-zA-Z] '
k = re.findall(regex,ds) # We extract all the matches (as a list)
nval={'f':k[0],'s':k[1],'t':k[2]} # We create the dictionary
all_dic.append(nval) # We append the dictionary to the list
print(all_dic)
# Output: [{'f': 'NO', 's': 'AG', 't': 'GK'}, {'f': 'NI', 's': 'DG', 't': 'BJ'}]
此外,您的檔案擴展名為k[3],以備不時之需。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408172.html
標籤:
上一篇:將單個sql檔案拆分為多個檔案
