我的目标是删除目录中所有文件路径中的所有单引号。在 Windows 中工作。
序言代码:
import os
import re
directory = "/home/oem/Documents/test"
以下内容不起作用。它删除包含撇号的整个文件。也无法删除
ord
并替换 "'"
def remove_non_ascii_1(text):
return ''.join(i for i in text if ord(i) == 39)
[os.rename(os.path.join(dp, f), remove_non_ascii_1(os.path.join(dp, f))) for dp, dn, filenames in os.walk(directory) for f in filenames]
当有一个撇号时(即名为crazy'yeah.doc的文件更改为crazyyeah.doc,以下内容有效。但当路径中有多个撇号时(即crazy'yeah'yeah.doc),它不起作用))
def remove_apstrophes(text):
return re.sub(r"(^.*)(')(.*$)", r"\1\3", text)
[os.rename(os.path.join(dp, f), remove_apstrophes(os.path.join(dp, f))) for dp, dn, filenames in os.walk(directory) for f in filenames]
我尝试添加一些更多的捕获组,但这不起作用-crazy'yeah'yeah.doc 保留所有撇号。
def remove_apstrophes(text):
return re.sub(r"(^.*)(')?.*(')?.*(')?.*(')?.*(.*$)", r"\1\6", text)
[os.rename(os.path.join(dp, f), remove_apstrophes(os.path.join(dp, f))) for dp, dn, filenames in os.walk(directory) for f in filenames]
提前感谢您的宝贵时间
除非您想强制执行正则表达式,否则此代码可以实现您想要做的事情:
def remove_apostrophes(text):
return text.replace("'", "")