Python在字符串匹配之前和之后插入行

时间:2017-05-24 17:04:08

标签: python-2.7

我在两个不同的行号上有两个变量INSERT INTO LOGS(query_type) VALUES (SELECT query_type_id FROM QUERYTYPES) var1。我的任务是:

  1. 要打开输入文件,请搜索以var2开头的行,并在该行上方插入注释。
  2. 要打开相同的输入文件,请搜索以var1开头的行,并在该行旁插入注释。
  3. 我能够达到1而不是2。

    var2

    输入文件:

    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 个答案:

答案 0 :(得分:0)

您似乎有很多不需要的变量。根据缩进,我读取代码的方式总是打印注释2,有时您会打印一次以上的行。 你不需要2 for循环。你不能使用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