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