Python 使用正则表达式删除文件名中的字符
假设我有一堆这样标记的文件:Python 使用正则表达式删除文件名中的字符,python,regex,replace,remove,Python,Regex,Replace,Remove,假设我有一堆这样标记的文件: SUS200_One.txt SUS300_Two.txt SUS400_Three.txt 我想删除某个目录中每个txt文件的SUSxxx部分。我有正确的正则表达式模式,当我在目录上执行循环时,我能够在每个文件上找到表达式。然而,我只是不知道我该如何移除它。例如,我希望每个文件都删除SUSXXX,并分别保留_1、_2、_3。以下是我到目前为止的情况。由于某种原因,我无法理解这一点,尽管这可能很简单。任何帮助都将不胜感激 rootdir = ('C:\\Test
- SUS200_One.txt
- SUS300_Two.txt
- SUS400_Three.txt
rootdir = ('C:\\Test')
pattern = re.compile(r'\w{3}\d{3}')
def removeChar():
for filename in os.listdir(rootdir):
findpattern = pattern.findall(filename)
removeChar()
Hello要使用regex更改文件名,我建议使用 re.sub()函数。请参阅下面的代码
rootdir = ('C:\\Test')
pattern = re.compile(r'\w{3}\d{3}')
def removeChar():
for filename in os.listdir(rootdir):
new_name = re.sub(pattern=pattern,string=filename,repl='')
removeChar()
但这只会更改字符串本身,而不会更改文件名。为此,您可能应该使用os.rename()函数
您需要使用
os.rename()
。以下是完整的代码:
重新导入
导入操作系统
rootdir='C:\\Test'
pattern=re.compile(r'\w{3}\d{3}')
def removeChar():
对于os.listdir(rootdir)中的文件名:
如果pattern.match(filename)不是None:#只重命名匹配的文件
newName=re.sub(模式,“,文件名)
newPath=os.path.join(rootdir,newName)
oldPath=os.path.join(rootdir,文件名)
重命名操作系统(旧路径、新路径)
removeChar()
这是否回答了您的问题?谢谢你。这正是我想要的。不用担心,请看这里,了解如何接受答案:
import os
old_file_name = "/home/career_karma/raw_data.csv"
new_file_name = "/home/career_karma/old_data.csv"
os.rename(old_file_name, new_file_name)