亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Bonobo的CsvReader()方法產生元組而不是字典?

為什么Bonobo的CsvReader()方法產生元組而不是字典?

幕布斯6054654 2021-05-13 14:18:46
我似乎無法在Bonobo ETL庫中獲得CsvReader來生成除元組以外的任何內容。該文檔似乎表明它應該產生字典而不是元組,但是嘗試一下,我似乎無法讓它通過除元組以外的任何東西。我真的很想訪問附加到每個值的列名。它引發一個錯誤,表明在傳遞時會出現列名,但是在我定義的轉換方法中,只有值本身可用。import bonobodef printer(*csv):    print(csv)def get_graph(**options):    graph = bonobo.Graph()    graph.add_chain(        bonobo.CsvReader('csv.txt'),        printer    )    return graphdef get_services(**options):    return {}if __name__ == '__main__':    parser = bonobo.get_argument_parser()    with bonobo.parse_args(parser) as options:        bonobo.run(get_graph(**options), services=get_services(**options))它與打印機方法的參數有關嗎?我知道,*csv當參數解壓縮可迭代的參數時,其他任何可能的參數聲明都將引發typeError。有什么建議么?避免完全使用內置的Bonobo CsvReader而不是僅創建使用DictReader或類似方法的提取方法會更好嗎?
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

文檔可能存在問題,但是CsvReader確實會產生某種元組(實際上,它與namedtuples非常相似)是出于一個簡單的原因:在python3.5中產生dict將導致字段順序更改,以及一個簡單的csvread -> csvwrite將以不可復制的方式更改字段順序。


如果要檢索“原始”輸入(又稱元組對象,未擴展為args),則可以使用@use_raw_input裝飾器。


from bonobo.config import use_raw_input


@use_raw_input

def some_node(row):

    for f in row._fields:

        ...

如果您知道期望的字段是顯式的,則使用關鍵字參數是另一個選擇。


def some_node(id, name, value):

    ...

希望能有所幫助。


查看完整回答
反對 回復 2021-05-18
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號