2014-04-29 2 views
0

일반적으로 프로그래밍 할 때 새롭고 특히 Python을 처음 사용하는 경우 초보자의 문제가 있습니다. 나는라는 NLTK에서 함수를 시도하고함수가 제공하는 출력을 변수에 저장

는 생성 :

string.generate() 

그것은 문자열처럼 보이는 반환합니다. 그러나, 나는 쓰기 :

stringvariable = string.generate() 

또는

stringvariable = str(string.generate()) 

...을 stringvariable은 항상 비어 있습니다.

그래서 여기에 뭔가 빠졌어. 화면에 표시되는 텍스트 출력이 문자열 출력이 아닌 다른 것일 수 있습니까? 그렇다면, 그 결과물을 잡고 변수에 넣을 수있는 방법이 있습니까?

간단히 말하면, 위에서 설명한대로 string.generate()에서 나오는 내용을 stringvariable로 가져 오는 방법은 무엇입니까?

+0

여기에없는 많은 정보를 있어요된다 (1) 당신의'string.generate()'함수가 출력하고 있지만 당신이보고있는 문자열을 반환하지 않을 수 있다는 것을 알아두면 도움이 될만한 몇 가지 질문이 있습니다. (2)'stringvariable'에 * something *이 있습니까? 'type (stringvariable)'을하면 어떻게 될까요? – BillyBBone

+0

첫째,'string'은 내장 모듈을 음영 처리하기 때문에 나쁜 변수 이름입니다. 둘째, 샘플 모음이 너무 작을 가능성이 큽니다. –

+0

함수를 반환하는 대신 문자열을 출력합니다. 캡처하는 방법을 모릅니다. – Paolo

답변

1

생성을 다시 작성할 수 있습니다. 유일한 단점은 그것이 변경하고 코드가 이러한 변경을 반영하도록 업데이트되지 않을 수 있다는 것입니다 :

다음
from nltk.util import tokenwrap 
def generate_no_stdout(self, length=100): 
    if '_trigram_model' not in self.__dict__: 
     estimator = lambda fdist, bins: LidstoneProbDist(fdist, 0.2) 
     self._trigram_model = NgramModel(3, self, estimator=estimator) 
    text = self._trigram_model.generate(length) 
    return tokenwrap(text) 

"a.generate()"를 "generate_no_stdout (a)는"

+0

완벽하게 작동합니다. – Paolo

관련 문제