Код работает нормально один, но в функции показывает ошибку - PullRequest
0 голосов
/ 18 января 2012

У меня проблема с кодом. Я написал функцию для извлечения параметра, отправив исходную строку и фрагменты текста pre / post, а также количество вхождений в тексте. Когда я писал это в простом коде, он прекрасно работал:

searchstr = 'qwer1234asdfqwer5678asdfqwer1234asdfqwer5678asdf'
startstr = 'qwer'
endstr = 'asdf'
occurancenr = 4
start = searchstr.find(startstr)
print 'start = ' + str(start)
while start >= 0 and occurancenr > 1:
  start = searchstr.find(startstr, start + len(startstr))
  occurancenr -= 1
  print 'start = ' + str(start) + ', and nr = ' + str(occurancenr)
start = start + len(startstr)
end = searchstr.index( endstr, start )
print 'result = ' + searchstr[start:end]

Но когда я помещаю его в метод, который возвращает строку, я получаю ошибку:

Вот функция:

  def findparam (self, searchstr, startstr, endstr, occurancenr):
  start = searchstr.find(startstr)
  while start >= 0 and occurancenr > 1:
    start = searchstr.find(startstr, start + len(startstr))
    occurancenr -= 1
  start = start + len(startstr)
  end = searchstr.index( endstr, start )
  return 'result = ' + searchstr[start:end]

и вот вызов для этого:

abc = 'qwer1234asdfqwer5678asdf'
aa = 'qwer'
bb = 'asdf'
print self.findparam(abc, aa, bb, 1)

Ошибка выглядит так:

SyntaxError: ('invalid syntax', ('C:\\grinder-3.4\\scripts\\ResultCheckMerged.py', 367, 3, '  start = searchstr.find(startstr)'))
(no code object) at line 0

Технически, это функция для запуска скриптов, и компаратор использует jython, но, поскольку не используется код Java, а просто код Python, я считаю это проблемой с питоном. Но все же, может быть, это как-то связано с этим.

Любые советы по этому вопросу приветствуются!

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Вам просто нужно правильно сделать отступ в своем коде.Следующее должно работать:

  def findparam (self, searchstr, startstr, endstr, occurancenr):
    start = searchstr.find(startstr)
    while start >= 0 and occurancenr > 1:
      ...
0 голосов
/ 18 января 2012

не делать отступ для строки def.


def findparam (self, searchstr, startstr, endstr, occurancenr):
      start = searchstr.find(startstr)
      while start >= 0 and occurancenr > 1:
        start = searchstr.find(startstr, start + len(startstr))
        occurancenr -= 1
      start = start + len(startstr)
      end = searchstr.index( endstr, start )
      return 'result = ' + searchstr[start:end]
...