これは簡単な質問のように思えますが、問題を特定できないようです。最初の行を除いて、オクトソープ(#)で始まるファイル内のすべての行を削除しようとしています。これが私が取り組んでいるループです:
for i, line in enumerate(input_file):
if i > 1:
if not line.startswith('#'):
output.write(line)
上記のコードは機能していないようです。誰かが私の問題が何であるか知っていますか?ありがとう!
あなたは最初の行を書いていません:
for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
enumerate
(ほとんどのものと同様)はゼロから始まることにも注意してください。
もう少し簡潔に(そして出力行を繰り返さないで):
for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
ここで列挙することは気にしません。最初の行とそうでない行を決定するだけで済みます。これは、最初の行を書き出してからforループを使用して、「#」で始まらない追加の行を条件付きで書き込むだけで、簡単に処理できるはずです。
def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
Lstripを使用する利点を指摘してくれたtwopoint718に感謝します。
最初の非空白文字がオクトソープである行を出力から省略したい場合があります。
for i, line in enumerate(input_file):
if i == 0 or not line.lstrip().startswith('#'):
output.write(line)
(lstrip
の呼び出しに注意してください)