我是python的新手,我刚开始学习基础知识。
我正在尝试创建一个程序来获取文件并注释(使用#)等号后没有任何内容的行。
例如,
V12 =
V13 = 3
应该是
#V12 =
V13 = 3
提前感谢您的帮助。
答案 0 :(得分:2)
基本上,您需要读入文件。然后,检查每一行。如果在等号上拆分后该行有一些东西,只需按原样输出该行;否则,在前面附加一个#标签,然后输出该行。
f = open(filename, "r")
lines = f.readlines()
f.close()
output_lines = []
for line in lines:
if len(line.split("=")[1]) > 0:
output_lines.append(line)
else:
output_lines.append("#" + line)
f = open("commented" + filename, "w")
f.write("\n".join(output_lines))
f.close()
答案 1 :(得分:1)
以下是一些可以运行的代码:
python comment.py < infile > outfile
comment.py:
import sys
# stdin/stdout live in sys
# "for line in file" reads each line of the file, returning the text
# of the line including the trailing newline
for line in sys.stdin:
if line.strip().endswith('='):
line = "#" + line
# print command adds a trailing newline, so we have to use all but
# the last character of our input line
print(line[:-1])
使用正常表达式的re
模块可以获得更多的爱好。
鉴于infile:
V12 = 'hello'
V23 = 'world'
V34 =
产生
V12 = 'hello'
V23 = 'world'
#V34 =
答案 2 :(得分:1)
对于这样的事情,我会保持简单,从一个文件读取并写入另一个文件。
with open('/path/to/myfile') as infile:
with open('/path/to/output', 'w') as outfile:
for line in infile:
if line.rstrip().endswith('='):
outfile.write('#' + line + '\n')
else:
outfile.write(line + '\n')
答案 3 :(得分:0)
您也可以使用此代码完成任务。唯一的限制是空变量没有空格。例如。 &#39; V 1 =&#39;
MyFile=open("AFile.txt", 'r+');
newdata = []
data = MyFile.readlines()
for item in data:
PosEquals = item.find('=')
LenOfItem = len(item)
# Checks position of equals in line
# and also if there is anything after equal sign
if PosEquals <> -1 and PosEquals <> LenOfItem-1:
newdata.append(item)
else:
newdata.append('#'+item)
MyFile.seek(0)
MyFile.writelines(newdata)
MyFile.close()