2017-05-24 100 views
0

我在兩個不同的行號上有兩個變量var1var2。我的任務是:在字符串匹配之前和之後的Python插入行

  1. 要打開輸入文件,請搜索以var1開頭的行並插入行註釋。
  2. 要打開相同的輸入文件,請搜索以var2開頭的行並在該行的下面插入註釋。

我是能夠實現1而不是2

var1 = 2 #line number 
var2 = 5 #line number 
comment1 = "inserted text above var1" 
comment2 = "inserted text below var2" 
    some for loop: 
    found1 = False 
    found2 = False 
        for line in fileinput.input(source.txt, inplace=True): 
         if not found and line.startswith(var1): 
          print comment1 
          found1 = True 
         print line, 
         if not found and line.startswith(var2): 
          print line 
          found1 = True 
         print comment2, 

輸入文件:

1 abc 
2 def 
3 ghi 
4 jkl 
5 mno 
6 pqr 
7 stu 

輸出應該是:

1 abc 
inserted text above var1 
2 def 
3 ghi 
4 jkl 
5 mno 
inserted text below var2 
6 pqr 
7 stu 

回答

0

你似乎有很多你不需要的變量。我根據縮進來讀取代碼的方式,您將始終打印comment2,並且有時您會多次打印此行。 您不需要2個循環。你永遠不會使用found1或found2,並且找到的變量永遠不會被定義,這些變量是你可能不需要的。你或者需要將source.txt定義爲一個變量,或者將它作爲一個字符串傳遞(放在它的周圍,這就是我認爲你應該做的事情)。var1和var2也應該是字符串,因爲str.startswith ()需要一個字符串中傳遞。

簡化了一點,我想你不會有問題,假設您正在處理正確讀取文件,這樣的事情應該做的伎倆。

var1= "2" #line number 
var2 = "5" #line number 
comment1 = "inserted text above var1" 
comment2 = "inserted text below var2" 
for line in fileinput.input("source.txt", inplace=True): 
    if line.startswith(var1): 
    print comment1 
    print line 
    if line.starswith(var2): 
    print comment2 
+0

Thanks ..!Works fine ..! – Anijan

+0

我很高興它適合你,你介意把它作爲正確答案嗎? – Jeff

相關問題