作为一名新手程序员,我最近偶然发现了我执行正则表达式的奇怪行为。通过解析excel文件,我用这种结构的键填充字典:
1 21555159 A T G P
15 2626264985 C A R Q
X 515151 G C D W
…
六个条目是制表符分隔的,我需要它们以此形式进行查询。 稍后,我解析另一个文件,其中所述键应该在某些行的开头找到(完全如上图所示),这个相当笨拙的正则表达式:
match = re.search("(^.{1,2}\t\d+\t\D\t\D\t\D\t\D)", line_iterater)
然后 - match.group() - 例如,我提供了这个输出......
1\t21555159\tA\tT\tG\tP
...当然,这与字典中的键不匹配,所以我无法访问相应的项目。
问题:为什么re
模块的这种行为为标签''得到'\ t''
或者我对它的理解有什么不妥。
(我天真的补救措施是使用\t
)
答案 0 :(得分:1)
输出,
1\t21555159\tA\tT\tG\tP
是对的。 Python使用escape sequence \t
表示制表符。并且,正如Cilyan,Pykler和l4mpi已经说过的那样,使用csv module解析制表符描述的值会更容易且更不容易出错。
其他