![](/img/trans.png)
[英]How to create an even and odd list in an output txt file from aan input.txt file? in python
[英]comment line is not being escape if it is in same line code from my input.txt file with python
我的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
并且您可以像这样在中间插入部分内容,以便删除所有符合条件的注释:
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
str.startswith
准确检查其名称含义:字符串是否以请求的前缀开头。 使用lstrip
剥离lstrip
空白lstrip
从一行的中间魔术地公开注释。
更好的选择是str.find
,它返回行上注释的索引。
def skip_comments(file):
for line in file:
index = line.find('//')
if index >= 0:
yield line[:index]
else:
yield line
您可以检查//
是否在您的行中,并只保留//
前出现的文本
for line in (l.split('//')[0].strip() for l in open('input.txt', mode='r') if l.split('//')[0].strip()):
f_write.write(line)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.