2017-01-21 14 views
-2

私は、pythonでtextwrapモジュールを使用してテキストを書式化しようとしています。何らかの理由で「int型のオブジェクトにlen()がありません」と言っているのですが、なぜその理由が分かりません。それは私が間違って使っているか、私が間違った順序で行っていることでなければなりません。前もって感謝します。TextWrapperモジュールのエラー

ここは画像ではなく私のコードです。

輸入JSON インポート要求 輸入textwrap

ザ・あなたはOMDB(オープンムービーデータベース)を使用して、ムービー

についての情報をつかむために使用できるモジュールです。

クラスMovieFinder():

def LookupMovie(self, movieName): 
    if not movieName: 
     return 

    #Grab the formatted query string 
    query = self.GetFormattedSearchQuery(movieName) 
    #Make the request 
    r = requests.get(query) 
    #Grab the json data 
    jsonInfo = r.json() 
    #Pull out all of the relevant information 
    searchResults = jsonInfo['Search'] 

    for movie in searchResults: 
     movieQuery = self.GetFormattedTitleQuery(movie['Title']) 
     response = requests.get(movieQuery) 
     jsonInfo = response.json() 

     movieResult = Result(jsonInfo['Title'], jsonInfo['Year'], 
          jsonInfo['Rated'], jsonInfo['Plot'], 
          jsonInfo['Released'], jsonInfo['Runtime']) 
     self._results.append(movieResult) 


def GetFormattedSearchQuery(self, movieName): 
    movie = 's=' + movieName 

    formattedQuery = self.queryString + movie 
    return formattedQuery 

def GetFormattedTitleQuery(self, movieName): 
    movie = 't=' + movieName.replace(" ", "+") 
    year = '&y=' 
    plot = '&plot=short' 
    responseType = '&r=json' 

    formattedQuery = self.queryString + movie + year + plot + responseType 
    return formattedQuery 

def GetResults(self): 
    return self._results  

def __init__(self): 
    self.queryString = 'http://www.omdbapi.com/?' 
    self._results = [] 

クラス結果():

def getTitle(self): 
    return self._title 

def getYear(self): 
    return self._year 

def getRating(self): 
    return self._rating 

def getPlot(self): 
    return self._plot 

def getReleaseDate(self): 
    return self._releaseDate 

def getRuntime(self): 
    return self._runtime 

def printInfo(self): 
    print ('Title  : ' + self.getTitle()) 
    print ('Year   : ' + self.getYear()) 
    print ('Release Date : ' + self.getReleaseDate()) 
    print ('Runtime  : ' + self.getRuntime()) 
    print ('Rating  : ' + self.getRating()) 
    wrapper = textwrap.TextWrapper() 
    wrapper.subsequent_indent = 16 
    plotLine = 'Plot   : ' + self.getPlot() 
    lines = wrapper.fill(plotLine) 

    for line in lines: 
     print(line) 

    print ('---------------------------------------') 

def __init__(self, title, year, rating, plot, releaseDate, runtime): 
    self._title = title 
    self._year = year 
    self._rating = rating 
    self._plot = plot 
    self._releaseDate = releaseDate 
    self._runtime = runtime 
+2

そして 'getPlot'とは何ですか? – TigerhawkT3

+0

ヒント: 'textwrap'はテキストの_strings_を折り返します。だからあなたはそれが文字列を渡すことを確認する必要があります。 –

+0

[質問するときにSOのコードをSOにアップロードできないのはなぜですか?](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code)を参照してください。 -on-so-when-asking-a-question) –

答えて

0

私が間違っていたものを考え出しました。問題は、TextWrapperモジュールの "subsequent_indent"フラグにありました。これは文字列でなければならず、字下げのための数字でもありません。

関連する問題