gpt4 book ai didi

python - 如何使用 re.sub 来实际替换文件名?

转载 作者:行者123 更新时间:2023-12-01 05:24:42 25 4
gpt4 key购买 nike

我编写了一个可以使用 mac 程序 Patterns 运行的正则表达式,当我在 python 脚本中使用代码时,我无法获取对文件名所做的更改。我知道您需要将 re.sub 的输出分配给一个新字符串,这是一个常见的错误。我这样做了,但仍然无法得到正确的结果。

这是我的代码,其中给定的文件名作为输入:

real.time.With.bill.maher.JUST.OVERTIME.2014.01.31.WEB-DL.Shadoe

比尔·马赫实时表演 2014 01 24 hdtv x264-2hd.mp4

比尔·马赫的实时表演2014.02.07.hdtv.x264-2hd.mp4

import re
import os

path = "/Users/USERNAME/Movies"
pattern = "(real[. ]time[. ]with[. ]bill[. ]maher[. ])"
replacement = "Real Time with Bill Maher "

def renamer(path, pattern, replacement):
for dirpath,_,file in os.walk(path):
for oldname in file:
if re.search(pattern, oldname, re.I):
newname = re.sub(pattern, replacement, oldname)
newpath = os.path.join(dirpath, newname)
oldpath = dirpath + "/" + oldname
print newpath + " < new"
print oldpath
os.rename(oldpath, newpath)

renamer(path, pattern, replacement)

最佳答案

代码在 re.sub 调用中缺少 re.I 标志:

>>> pattern = "(real[. ]time[. ]with[. ]bill[. ]maher[. ])"
>>> replacement = "Real Time with Bill Maher "
>>> re.sub(pattern, replacement, 'real.time.With.bill.maher.JUST.OVERTIME.2014.01.31.WEB-DL.Shadoe')
'real.time.With.bill.maher.JUST.OVERTIME.2014.01.31.WEB-DL.Shadoe'
>>> re.sub(pattern, replacement, 'real.time.With.bill.maher.JUST.OVERTIME.2014.01.31.WEB-DL.Shadoe', flags=re.I)
'Real Time with Bill Maher JUST.OVERTIME.2014.01.31.WEB-DL.Shadoe'

您应该指定flags作为关键字参数,否则它将被识别为count(替换计数)参数。

关于python - 如何使用 re.sub 来实际替换文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com