我有一个字符串S = '02143'和一个列表A = ['a','b','c','d','e']。我想将 'S' 中的所有数字替换为 list 中相应的元素A。
例如,替换0为A[0]、2withA[2]等。最终输出应该是S = 'acbed'.
我试过:
S = re.sub(r'([0-9])', A[int(r'\g<1>')], S)
Run Code Online (Sandbox Code Playgroud)
然而这会产生错误ValueError: invalid literal for int() with base 10: '\\g<1>'。我猜它正在将反向引用'\g<1>'视为字符串。我该如何解决这个问题,特别是使用re.sub和捕获组,否则呢?
我有一个abc.txt看起来像这样的文本文件:
dQdC(sA1B2C3,sC5) = A lot of stuff
a = b = c
Baseball
dQdC(sC2V3X1,sD5) = A lot of stuff again
Run Code Online (Sandbox Code Playgroud)
现在我想在Perl中创建两个数组,其中一个将包含A1B2C3和C2V3X1,其他数组将包含C5和D5.我不关心其他中间线.为了实现这个目标,我正在尝试这个perl脚本:
for (my $in=0;$in<=$#lines;$in++){
if ($lines[$in]=~/dQdC\(s([A-Z0-9]+?),s([A-Z0-9]+?)\)/) {
print "1111"; #this line is just to check if it is at all going inside the loop
@A = $1;
@B = $2;
}
Run Code Online (Sandbox Code Playgroud)
但是,它甚至没有进入循环内部.所以我想我的正则表达式做错了.有人请告诉我这里做错了什么吗?