1

私はちょうどpythonを学んでいて、些細な間違いをしているようです。このコードでは、パターンへのコンストラクターの使用が取得され、エラーが発生します。

" cit_ref = Patterns( patstring, 3) TypeError: このコンストラクターは引数を取りません"

import re

class Patterns:
    """A simple struct to hold our regex """
def __init__(self, pat, bodynumArg=2):
    self.pat = pat
    self.bodynum = bodynumArg
    self.reg = re.compile(self.pat, re.M+re.S)

patstring = r'<((us-)?references-cited)>(.*?)</\1>'
cit_ref = Patterns( patstring, 3)
4

1 に答える 1

5

__init__の下になるように関数をインデントするだけですclass Patterns。このような:

import re

class Patterns:
    """A simple struct to hold our regex """
    def __init__(self, pat, bodynumArg=2):
        self.pat = pat
        self.bodynum = bodynumArg
        self.reg = re.compile(self.pat, re.M+re.S)

patstring = r'<((us-)?references-cited)>(.*?)</\1>'
cit_ref = Patterns( patstring, 3)

Python では、インデントは基本的に、他の言語でブラケット/ブレースが行うのと同じことを行います。コードを区切るため、インデントに注意する必要があります。

于 2013-02-14T01:39:20.433 に答える