gpt4 book ai didi

python - 如果注释行与我的 input.txt 文件中的 python 位于同一行代码中,则注释行不会被转义

转载 作者:行者123 更新时间:2023-11-28 21:33:18 25 4
gpt4 key购买 nike

我的 input.txt 文件中有包含由 // 标记的注释的行:

输入文件

something
something // something something
// something something
something

这里跳过了第 3 行,但没有跳过第 2 行。

我的代码

for line in (l for l in open('input.txt', mode='r') if not l.lstrip().startswith('//')):
f_write.write(line)

将相同的代码重写为可重用函数:

def skip_comments(file):
for line in file:
if not line.lstrip().startswith('//'):
yield line

f = open('input.txt')
for line in skip_comments(f):
f_write.write(line)

两个片段产生相同的结果。我多次尝试使用不同的模式和字符串打开,但如果没有 lstrip,它不起作用。

最佳答案

你应该这样编写代码:

def skip_comments(file):
for line in file:
if not line.lstrip().startswith('//'):
line = line.split("//")
yield line[0]

更新

如果您想检查更复杂的评论,我建议使用以下代码:

def skip_comments(file):
for line in file:
if line.startswith('//'):
continue
elif line.find("/*")>=0:
startIndex = line.find("/*")
endIndex = line.find("*/")
line = line[:startIndex] + line[endIndex + len("*/"):]
yield line
else
line = line.split("//")[0]
yield line

你可以像这样把中间部分放在 while 中,这样它就会删除行中的所有注释:

def skip_comments(file):
for line in file:
if line.startswith('//'):
continue
elif line.find("/*")>=0:
while(line.find("/*")>=0):
startIndex = line.find("/*")
endIndex = line.find("*/")
line = line[:startIndex] + line[endIndex + len("*/"):]
yield line
else
line = line.split("//")[0]
yield line

关于python - 如果注释行与我的 input.txt 文件中的 python 位于同一行代码中,则注释行不会被转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54780061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com