if re.match(f'{model_dir}/shard-\d+/{suffix}', filename):
shard = int(root.split('/')[-1].split('-')[-1])
print(shard)
model = model_init()
model.load_weights(filename)
models[shard] = {
'model': model,
'shard': shard
}
上述代码中,re.match()运行完报错:re.error: bad escape \C at position 2,不知道该如何解决
把f'{model_dir}/shard-\d+/{suffix}'赋值给一个变量打印出来看看是什么? 是否要转义 \
re.match与re.search函数可以返回match对象,re.finditer可迭代对象返回的也是match对象。如果pattern(正则表达式)中使用了分组,如果有匹配结果,会在match对象中。
1. 使用group(N)方式可以获取对应分组,1到N是对应的分组,0返回整个匹配的字符串,也就是默认分组Match,N默认的缺省值为0。
2. 如果使用了命名分组,可以使用group(“name”)的方式获取分组
3. 也可以使用groups()返回所有组
4. 使用groupdict()返回所有命名的分组,和组名的对应关系组成的字典
根据错误提示信息,问题出现在正则表达式中的转义字符 \C,这是一个无效的转义字符。需要将其改为相应的字符或删除该转义字符。
例如,如果原本意思是匹配大写字母 C,可以将正则表达式中的 \C 改为 C;如果该转义字符并非必要,可以直接将其删除。
代码示例:
import re
pattern = r'Cfoo'
string = 'Cfoobar' match = re.match(pattern, string)
if match: print(match.group(0)) print(match.start()) print(match.end()) else: print('No match')