【问题标题】:'str' object has no attribute 'decode' in python with unicodecsv'str'对象在带有unicodecsv的python中没有属性'decode'
【发布时间】:2020-07-31 10:45:31
【问题描述】:

以下代码在 python 3.8 中出现错误,使用 networkx, unicodecsv

with open('hero-network.csv', 'r') as data:
    reader = csv.reader(data)
    **for row in reader:**
        graph.add_edge(*row)
AttributeError: 'str' object has no attribute 'decode'

【问题讨论】:

  • 不清楚是什么引发了这个错误。您能否包括整个堆栈跟踪,以及 graph 是什么?
  • 如果你使用常规的 Python csv 模块而不是 unicodecsv 会发生什么?请记住,unicodecsv 旨在解决 Python 2.7 中的缺点,但该错误消息看起来像是来自 Python 3
  • @jjramsey 它正在使用常规 csv 模块。谢谢。

标签: python


【解决方案1】:

unicodescv.reader 期望文件以 binary 模式打开,因为至少在理论上,它将解决如何解码字节。

with open('hero-network.csv', 'rb') as data:   # the mode is 'rb', not 'r'
    reader = csv.reader(data)
    for row in reader:
        graph.add_edge(*row)

正如 cmets 中所指出的,unicodecsv 对 Python2 更有用,因为标准库的 csv 模块的 unicode 处理很差。在 Python 3 中,您可以在打开文件并将生成的文件对象传递给标准库的 csv 模块时指定编码。

【讨论】:

    【解决方案2】:

    当您尝试解码已解码的str 时会发生该错误。您是否正确传递了参数?

    来源:'str' object has no attribute 'decode'. Python 3 error?

    【讨论】:

      【解决方案3】:

      csv 中的reader 方法接受reader 而不是str

      检查this post

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 2018-12-01
        • 2015-05-15
        • 1970-01-01
        • 2014-11-25
        • 2015-04-19
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        相关资源
        最近更新 更多