【问题标题】:Code works fine alone, but in function shows error代码单独工作正常,但在函数中显示错误
【发布时间】:2012-01-18 10:04:53
【问题描述】:

我的代码有问题。我编写了一个用于提取参数的函数,通过发送原始字符串、前/后文本片段以及文本中的出现次数。当我用简单的代码编写它时,效果很好:

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 代码,我认为这是一个 python 问题。但是,也许它与此有关。

对此的任何提示表示赞赏!

【问题讨论】:

  • 请注意 - 来自PEP 8:“每个缩进级别使用 4 个空格”:)

标签: python jython grinder


【解决方案1】:

您只需要正确缩进您的代码。下一个应该工作:

  def findparam (self, searchstr, startstr, endstr, occurancenr):
    start = searchstr.find(startstr)
    while start >= 0 and occurancenr > 1:
      ...

【讨论】:

    【解决方案2】:

    不要缩进 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]
    

    【讨论】:

      猜你喜欢
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多