2013-02-28 61 views
0

使用python和NLTK我想將幫助結果保存到變量。Python:將幫助結果保存到變量

x = nltk.help.upenn_tagset('RB') 

例如。

x變量被賦值爲無。控制檯打印幫助功能的結果,但不保存到var x。

+0

http://stackoverflow.com/questions/6796492/python-temporarilyred_stdout-stderr應該有所幫助。您可以將其重定向到一個StringIO對象,然後從中讀取。 – mgilson 2013-02-28 17:21:18

+0

https://github.com/nltk/nltk/issues/205 – YXD 2013-02-28 17:21:43

回答

0

查看help.py的源文件,它使用print語句並不返回任何內容。 upenn_tagset調用_format_tagset,它將所有內容都傳遞給_print_entries,它使用print

所以,我們真正想做的是重定向打印語句。

快速搜索,我們有https://stackoverflow.com/a/4110906/1210278 - 替換sys.stdout

正如@mgilson關聯的問題所指出的那樣,這是一個臨時性問題的永久性解決方案。那麼我們該怎麼辦?這應該很簡單 - 只要保持原來的地方。

import sys 
print "Hello" 
cons_out = sys.stdout 
sys.stdout = (other writable handle you can get result of) 

do_printing_function() 

sys.stdout = cons_out 
print "World!" 

這實際上正是在https://stackoverflow.com/a/6796752/1210278接受的答案呢,只不過它採用的是可重複使用的類包裝 - 這是一個一次性的解決方案。

相關問題