You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下如何移除文件路径中的多个单引号?

解决Windows下移除目录所有文件路径中全部单引号的问题

问题分析

你尝试的几种方法都存在逻辑或正则写法问题:

  • 第一种方法逻辑完全反转:''.join(i for i in text if ord(i) == 39)只保留单引号、丢弃所有其他字符,导致原文件被移到错误路径甚至直接丢失。
  • 第二种方法只能处理单个单引号:正则(^.*)(')(.*$)仅匹配并替换一次单引号(贪婪匹配会让^.*覆盖到最后一个单引号前的内容,替换后仍残留其他单引号)。
  • 第三种方法正则写法错误:(^.*)贪婪匹配会吃掉整个字符串,后续捕获组根本无法匹配到单引号,完全不起作用。

正确解决方案

不需要复杂正则,直接用字符串replace方法全局替换所有单引号即可,同时用循环遍历目录(比列表推导式更易排查错误):

import os

# Windows路径示例,建议用原始字符串避免转义问题
directory = r"C:\Users\YourName\Documents\test"

def remove_all_apostrophes(text):
    # 全局替换所有单引号为空字符串
    return text.replace("'", "")

# 遍历目录处理所有文件
for dp, dn, filenames in os.walk(directory):
    for f in filenames:
        original_path = os.path.join(dp, f)
        new_path = remove_all_apostrophes(original_path)
        # 仅当路径确实有变化时执行重命名
        if original_path != new_path:
            try:
                os.rename(original_path, new_path)
                print(f"已重命名:{original_path} → {new_path}")
            except Exception as e:
                print(f"重命名失败 {original_path}:{str(e)}")

额外说明

如果需要同时处理目录名中的单引号,需从最深层子目录开始向上处理(避免os.walk遍历到已重命名的目录时出错),可以添加这段代码:

# 处理目录名(从下往上遍历)
for dp, dn, filenames in os.walk(directory, topdown=False):
    for dir_name in dn:
        original_dir = os.path.join(dp, dir_name)
        new_dir = remove_all_apostrophes(original_dir)
        if original_dir != new_dir:
            try:
                os.rename(original_dir, new_dir)
                print(f"已重命名目录:{original_dir} → {new_dir}")
            except Exception as e:
                print(f"重命名目录失败 {original_dir}:{str(e)}")

内容的提问来源于stack exchange,提问作者oymonk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:02:55