gpt4 book ai didi

python - 带有特殊字符 "^"的文件名无法被 pattern.match 识别(RegEx 函数)

转载 作者:行者123 更新时间:2023-11-28 21:34:20 25 4
gpt4 key购买 nike

我在 Winows 10 上使用 Python 3.6.5。

我无法验证目录中是否存在文件。
问题似乎来自特殊字符“^”。

当我运行下面的代码时,os.listdir () 函数很好地列出了“WITHOUT_CIRCUMFLEX”和“^WITH_CIRCUMFLEX”文件。
但是,文件“^ WITH_CIRCUMFLEX”不能被函数pattern.match(文件)识别......虽然它存在!

有人有解决这个问题的想法吗?
谢谢你的帮助

# 编码:utf-8

将 Pandas 导入为 pd
导入 os.path
导入正则表达式
路径 = "C:\Users\David\test"
list_name = ['WITHOUT_CIRCUMFLEX', '^WITH_CIRCUMFLEX']

df_empty = pd.DataFrame()

对于 list_name 中的名称:
df_empty.to_pickle('{path}\{name}.pkl'.format(**locals()))
模式 = regex.compile('{name}.pkl'.format(**locals()))
# Check if file already exist
check = False
for file in os.listdir(path):
print("I found this file\t" + file)
if pattern.match(file):
check = True

if check is True:
print("\t" + name + " file exist" + "\n")
else:
print("\t" + name + " does not exist")

最佳答案

^是一个正则表达式元字符,所以它不会匹配文字 ^文本中的字符。您需要转义这些字符:

'\^WITH_CIRCUMFLEX'

如果您的输入是从其他来源生成或获取的,请使用 regex.escape()为您转义元字符的功能:
for name in list_name:
df_empty.to_pickle('{path}\{name}.pkl'.format(**locals()))
name = regex.escape(name, special_only=True)
pattern = regex.compile('{name}.pkl'.format(**locals()))

但是,如果您正在寻找匹配文件,那么您目前没有使用任何使用正则表达式的原因。您的模式最多可以匹配任何以 {name}.pkl 结尾的文件名。 .你最好使用 glob module :
import glob

for name in list_name:
...
escaped_name = glob.escape(name)
files = glob.glob('*{}.pkl'.format(escaped_name))

关于python - 带有特殊字符 "^"的文件名无法被 pattern.match 识别(RegEx 函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53466404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com