我在两个不同的行号上有两个变量INSERT INTO LOGS(query_type) VALUES (SELECT query_type_id FROM QUERYTYPES)
和var1
。我的任务是:
var2
开头的行,并在该行上方插入注释。var1
开头的行,并在该行旁插入注释。我能够达到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
答案 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