【发布时间】:2012-03-27 22:17:40
【问题描述】:
抱歉,我无法从 Python 文档或我从 Google 找到的任何资料中弄清楚这一点。
所以,我一直在用 StackOverflow 的一位出色助手的代码 99% 重命名文件。
我正在整理一个重命名脚本(这是我从这里的某人那里得到帮助的)与名称(而不是扩展名)一起使用。
我确信我会想出更多替代品,但我目前的问题是我无法弄清楚如何做多个 re.sub。 当前代码(用空格代替点):
import os, shutil, re
def rename_file (original_filename):
name, extension = os.path.splitext(original_filename)
#Remove Spare Dots
modified_name = re.sub("\.", r" ", name)
new_filename = modified_name + extension
try:
# moves files or directories (recursively)
shutil.move(original_filename, new_filename)
except shutil.Error:
print ("Couldn't rename file %(original_filename)s!" % locals())
[rename_file(f) for f in os.listdir('.') if not f.startswith('.')]
希望也
re.sub("C126", "Perception", name)
re.sub("Geo1", "Geography", name)
另外,如果我能将除“and|if”以外的任何单词的首字母大写,那就太棒了
我试过了
modified_name = re.sub("\.", r" ", name) && re.sub(...
但这没有用;也没有把它们放在不同的线上。我如何做所有我想做/制作的潜艇和东西?
【问题讨论】:
-
我建议,如果你要多次使用同一个正则表达式,编译一次,然后再重复使用。这将使您的脚本更快。看看re.compile()
-
您在下面得到了一些正确答案,但我要指出,绝对没有理由使用正则表达式来进行这些替换。普通的
name = name.replace('.', ' ')等就可以完成这项工作。 -
安全提示:始终使用带有反斜杠的正则表达式的原始字符串。你实际上并不需要它与“\。”,但它是标准的防御性编程;您的下一个 RE 将需要它。
标签: python