作者LP9527 ()
看板Python
标题Re: 删除类似资料
时间Sat Mar 13 04:23:59 2021
png = '''10day.png
20day.png
20day-1.png
30day.png
40day.png
40day-1.png
40day-2.png'''.split('\n')
dic = {}
for p in png:
....prefix = p.split('day')[0]
....suffix = int(p.split('day')[-1].replace('.png', '').replace('-', '') or 0)
....dic[prefix] = max(dic.get(prefix, 0), suffix)
print(dic)
# {'10': 0, '20': 1, '30': 0, '40': 2}
res = [f'{k}day'+(f'-{v}' if v else '') + '.png' for k, v in dic.items()]
print(res)
# ['10day.png', '20day-1.png', '30day.png', '40day-2.png']
我会这样做 给你参考
※ 引述《tzouandy2818 (Naked Bear)》之铭言:
: ※ 引述《crm123 (CRM)》之铭言:
: : 小弟用list装资料 资料内容类似如下
: : 10day.png
: : 20day.png
: : 20day-1.png
: : 30day.png
: : 40day.png
: : 40day-1.png
: : 40day-2.png
: : 想要做到能够删除类似资料(开头的10、20)
: : 然後重复的(20两笔留-1的、40留-2)
: : 想问有没有什麽方法能够达到
: : 谢谢
: : -----
: : Sent from JPTT on my iPhone
: 小弟目前自学四个月,练习写了一下
: - - -
: file_dict = {'10day.png': '10day.png内容 要留',
: '20day.png': '20day.png内容 不留',
: '20day-1.png': '20day-1.png内容 要留',
: '30day.png': '30day.png内容 要留',
: '40day.png': '40day.png内容 不留',
: '40day-1.png': '40day-1.png内容 不留',
: '40day-2.png': '40day-2.png内容 要留'
: }
: file_name_list_raw = list(file_dict.keys())
: file_name_list_del = []
: for i in file_name_list_raw:
: if '-' in i:
: extension = i.split('.')[-1]
: serial = int(i.split('-')[-1].split('.')[0])
: name = i.split('-')[0]
: if serial == 1:
: file_name_list_del.append(name+'.'+extension)
: else:
: file_name_list_del.append(name+'-'+str(serial-1)+'.'+extension)
: for i in file_name_list_del:
: del file_dict[i]
: print(file_dict)
: - - -
: 最後输出结果是
: {'10day.png': '10day.png内容 要留',
: '20day-1.png': '20day-1.png内容 要留',
: '30day.png': '30day.png内容 要留',
: '40day-2.png': '40day-2.png内容 要留'}
: 如果要只把档案内容存成list的话,再加一条
: 变数 = list(file_dict.values())
: 就可以了
: 感觉文字处理的部分如果用正规表示式的话应该可以更好,
: 希望能抛砖引玉,看看板上大大更好的写法
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.137.237.55 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1615580642.A.34C.html
※ 编辑: LP9527 (101.137.237.55 台湾), 03/13/2021 05:04:38
1F:→ tzouandy2818: 其实我是不知道他要处理的资料到底是档名还是档案内 03/13 19:41
2F:→ tzouandy2818: 容 才会用dict的方式 key放档名 value放档案内容 03/13 19:41
3F:推 crm123: png就是副档名了 主要是要判断档名有没有- 有的话就找数字 03/13 19:43
4F:→ crm123: 最高的 其他剔除 03/13 19:43
5F:→ tzouandy2818: 我跟他的写法在副档名的部分都没问题啊 03/14 00:13
6F:→ tzouandy2818: 我是说 不知道你在list里要放的资料到底是xxxx.png 03/14 00:14
7F:→ tzouandy2818: 这个档名 还是xxxx.png这张图片 03/14 00:14
8F:推 crm123: 放档名而已 03/14 10:14