2017-05-24 1 views
0

Ich habe zwei Variablen var1 und var2 auf zwei verschiedenen Zeilennummern. Meine Aufgabe ist:Python Einfügen Zeile vor und nach Zeichenfolge übereinstimmen

  1. Um eine Eingabedatei zu öffnen, suchen Sie nach den Zeilen beginnend mit var1 und fügen Sie einen Kommentar ÜBER der Zeile ein.
  2. Um dieselbe Eingabedatei zu öffnen, suchen Sie nach den Zeilen, die mit var2 beginnen, und fügen Sie unterhalb der Zeile einen Kommentar ein.

konnte ich 1 erreichen, aber nicht 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, 

Eingabedatei:

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

ausgegeben werden soll:

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

Antwort

0

Sie scheinen eine Menge zu haben von Variablen, die Sie nicht brauchen. Die Art, wie ich Ihren Code gelesen habe, basiert auf der Einrückung, Sie werden immer Kommentar2 drucken, und manchmal drucken Sie die Zeile mehr als einmal. Sie benötigen keine 2 for-Schleifen. Sie verwenden found1 oder found2 nicht, und die gefundene Variable wird nie definiert. Dies sind Variablen, die Sie wahrscheinlich nicht benötigen. Entweder müssen Sie source.txt als Variable definieren oder als String übergeben (setzen Sie "darum herum, was ich denke, was Sie tun wollten.) Var1, und var2 sollte auch Strings sein, da str.startswith() erwartet einen String übergeben werden.

Vereinfachen es ein wenig und ich denke, man wird nicht ein Problem haben. Unter der Annahme, dass Sie Umgang mit der die Datei korrekt lesen, so etwas wie dies sollte es tun.

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

Danke ..! Funktioniert gut ..! – Anijan

+0

Ich bin froh, es funktioniert für Sie.Wären Sie etwas dagegen, es als die richtige Antwort zu markieren? – Jeff

Verwandte Themen