数学建模社区-数学中国

标题: 删除文件注释 [打印本页]

作者: 2744557306    时间: 2024-3-31 17:15
标题: 删除文件注释
输入文件名,行注释标签,块注释标签,生成删除注释后的文件保存并覆盖原文件。
: r7 K( j% q1 L% g' Q6 s例如C语言使用 // 和 /* */ 来注释,调用方式如下:
  1. del_comm("main.c","//",["/*","*/"])
    ( V- d' Q) I" D9 z) P, i
复制代码
  1. # 删除所有注释
    & H% h7 L- n* s! R/ K) S) L1 X
  2. def del_comm(file:str,line_comm:str,blok_comm:list[str]):
    * x0 E$ @% F  Q
  3.     text=""
    3 T. P2 I" G$ r; m1 h- i' T. m
  4.     try:
    ' Z6 @! C- V. N, e1 M' R( O
  5.         with open(file,encoding="utf-8") as f:2 _+ }( m$ M4 Z9 T5 h
  6.             lines=f.readlines()+ U0 {, Y% u" c: J1 P% E- f3 L# B
  7.     except Exception as e:
    ( J8 W# m% a, k# R7 Z' b( b
  8.         print("decode failed",file): c0 m5 v( E! i
  9.         return6 s& e7 ~5 ]) ]
  10.     for i in range(len(lines)):
    5 {, C; E8 c5 s/ r/ Y3 c
  11.         index=lines[i].find(line_comm)
    ) y& C: X0 C6 }- d$ |& M
  12.         if(index>=0):
    " `0 s! L5 J1 \0 e
  13.             lstr=lines[i][:index]
    / |' q- `6 P  r
  14.         else:* `) ~4 v" w! F0 Q& K. Y; e
  15.             lstr=lines[i].rstrip()
    2 x: R' r; f2 {; R4 I
  16.         if(len(lstr.strip())>0):
    4 `5 K2 N2 A. s6 V
  17.             text+=lstr+'\n'
    / ]2 O( V. G3 `- j
  18.         elif(text[-2:]=='\\\n'):
    5 z# x0 Y" O0 J9 z' G1 A
  19.             text+='\n'
    / }' o! |! S+ E0 e; N
  20.     index_start=0
    ( E$ m2 O* ~' i2 `3 I- r% T
  21.     text_out=""
    ' L: T0 [( p' `
  22.     while True:& p3 B' D/ `, O6 r
  23.         index=text.find(blok_comm[0],index_start)6 E8 }* O( W4 o7 @+ N* z
  24.         index_end=text.find(blok_comm[1],index)
    & F% V9 k# u; Q: i/ |
  25.         if(index>=0 and index_end>index):# y$ c, X6 N! V+ V
  26.             text_out+= text[index_start:index]. Q- ~6 @. N1 C! G
  27.             index_start=index_end+len(blok_comm[1])
    0 n! N) f. ~  \2 q* M
  28.         else:( A* y; `( Y0 c
  29.             text_out+=text[index_start:], m/ U& a. C  u: {! ?6 \; A4 M
  30.             break
    ; w3 b. \: q8 s; w; o, w& x/ X
  31.     with open(file,mode="w+",encoding="utf-8") as f:  S$ r- [& _" v/ ^4 i7 C4 {
  32.         f.write(text_out)7 P1 `+ V5 j3 J) {
  33.         # u& C. k) `' ]) X- f& I" m
复制代码

# E1 ^6 Q  {+ ?4 W% k




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5