今天看python核心编程看到一个问题,题意大概就是过滤一个file-like对象里“#”的注释部分,然后输出其他部分。简单情形下,另写一行的#注释比较好判断,用startwith('#')匹配应该能满足。问题在于那些写在正常业务代码之后的注释,该如何过滤之?举个例子:
if name.find(",") == -1:#Annotations pass
请问有没有人了解它是怎么过滤这种注释的?谢谢。
Parlons de l'idéeSi vous ne considérez pas le # dans la chaîne, il est très pratique d'utiliser re pour faire correspondre
#
#[^\n]*?\n
peut être Si vous considérez que le # dans la chaîne est légèrement plus compliqué, faites correspondre :
#[^'"]*?\n
À peine capable de faire face à la plupart des situations
L'inconvénient est que pour
'a' # 'b'
Une telle déclaration ne peut pas être comparée car le re de Python ne prend pas en charge les groupes équilibrés.
Utilisez simplement une expression régulière pour faire correspondre # à la fin de la ligne.
Parlons de l'idée
Si vous ne considérez pas le
#
dans la chaîne, il est très pratique d'utiliser re pour faire correspondrepeut être
Si vous considérez que le
#
dans la chaîne est légèrement plus compliqué, faites correspondre :À peine capable de faire face à la plupart des situations
L'inconvénient est que pour
Une telle déclaration ne peut pas être comparée car le re de Python ne prend pas en charge les groupes équilibrés.
Utilisez simplement une expression régulière pour faire correspondre
#
à la fin de la ligne.