2014-12-03 49 views
1

我想在Python docutils.parsers.rst.tableparser包中使用解析器來獲取純文本表並輕鬆解析它。表tableparser可以讀取的格式非常方便我的項目。試圖在Python中使用docutils.parsers.rst.tableparser

問題是,即使文檔說到解析(塊)函數的輸入是'文本行列表;沒有空白填充「,每當我嘗試解析失敗的東西時。

那麼一小塊這樣的代碼:

import docutils.parsers.rst.tableparser as tbp 

parser = tbp.GridTableParser() 
parser.parse(['+---+---+', '| a | b |', '| c | d |', '+---+---+']) 

將失敗,並出現以下錯誤信息:

File "[...]/python2.7/site-packages/docutils/parsers/rst/tableparser.py", line 149, in setup 
    self.block.disconnect() # don't propagate changes to parent 

AttributeError: 'list' object has not attribute 'disconnect' 

我一直試圖找到使用此功能的在線的例子,但我一直無法找到任何東西,我需要傳遞給parse()函數的什麼類型的「文本行列表」的任何線索?

回答

3

一些源瀏覽我得到了這一點之後,它似乎是工作:)

from docutils.parsers.rst import tableparser 
from docutils import statemachine 

parser = tableparser.GridTableParser() 
block = statemachine.StringList([ 
    '+---+---+', 
    '| a | b |', 
    '| c | d |', 
    '+---+---+', 
]) 
print parser.parse(block) 

結果:

(
    [3, 3], 
    [], 
    [[ 
     (0, 0, 1, StringList(['a', 'c'], items=[(None, 1), (None, 2)])), 
     (0, 0, 1, StringList(['b', 'd'], items=[(None, 1), (None, 2)])), 
    ]], 
) 
+0

完美的作品,謝謝! – eSedano 2014-12-04 09:46:22