从以下文件名列表中,我试图检索突出显示的部分:
其模式是:
import os
import re
root = "C:/root"
data = dict()
re_pattern = "[a-zA-Z|2-9][h|s|c|d][a-zA-Z|2-9][h|s|c|d][a-zA-Z|2-9][h|s|c|d]"
for folder in os.listdir(root):
data[folder] = dict()
for item in os.listdir(f"{root}/{folder}"):
board_id = re.findall(item, re_pattern)
print(board_id)
data[folder][item] = f"{root}/{folder}/{item}"我原以为我的准则会起作用,但它找到了一个空的列表。我的正则表达式还是代码错了?目标是让board_id成为字典键,并使整个路径的值。
编辑改进的模式如下所示:
import os
import re
root = "C:/root"
data = dict()
re_pattern = "(?i)(?:[2-9AJKQT][hscd]){3}"
for folder in os.listdir(root):
data[folder] = dict()
for item in os.listdir(f"{root}/{folder}"):
board_id = re.search(item, re_pattern)
print(f"{item} :: {board_id}")
data[folder][item] = f"{root}/{folder}/{item}"结果仍然不正确,必须在代码中替代:
诚挚的问候
发布于 2019-11-20 15:13:02
(?i)(?:[2-9AJKQT][hscd]){3}对于无实例匹配,请使用(?i)、标志或re.IGNORECASE。
仔细查看您的代码,进一步了解re.findall
re.findall(pattern, string, flags=0)对于未来的另一个想法,它可能进一步考虑,一般考虑使用原始字符串表示法的regex模式,但这不是一个问题,您的当前模式。
https://stackoverflow.com/questions/58957479
复制相似问题