正则表达式:为什么输出'\\ 1'而不是'\ 1'?

时间:2019-09-24 16:38:19

标签: python python-regex

我需要找到\1, \2 ... \n来匹配字符串中的模式。

以下是示例解决方案中的代码:

re_parts = [r'\{}'.format(i+1) for i in range(len(cut_parts))]  # suppose len(cut_parts) = 2

输出为['\\1', '\\2']

我的第一个问题是为什么它会以['\\1', '\\2']而不是['\1', '\2']的形式出现?我认为该数字将放在'\{}'.format(1)'\{}'.format(2)的大括号中。

第二个问题是我的第一个问题的后续工作:在一个赋值中,re.sub()函数生成我想要的内容:在给定的字符串中找到第一个和第二个对应的输出,并用定界符“ |”:

re.sub('(A[ACGT]T)(AAT)', '\\1|\\2', 'GCATAGTAATGTATTAATGGC')

但是,如果我将以上编码更新为re.sub('(A[ACGT]T)(AAT)', '\1|\2', 'GCATAGTAATGTATTAATGGC'),即单个反斜杠,则结果为GCAT\x01|\x02GT\x01|\x02GGC。我已经在网上搜索,但失败了。此输出是什么意思?

谢谢。

0 个答案:

没有答案