Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式删除文件名中的字符_Python_Regex_Replace_Remove - Fatal编程技术网

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
我想删除某个目录中每个txt文件的SUSxxx部分。我有正确的正则表达式模式,当我在目录上执行循环时,我能够在每个文件上找到表达式。然而,我只是不知道我该如何移除它。例如,我希望每个文件都删除SUSXXX,并分别保留_1、_2、_3。以下是我到目前为止的情况。由于某种原因,我无法理解这一点,尽管这可能很简单。任何帮助都将不胜感激

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)