【问题标题】:Python name is not defined while converting json tweets to csv将 json 推文转换为 csv 时未定义 Python 名称
【发布时间】:2017-08-26 10:17:41
【问题描述】:

*朋友们好! 我想将我使用 tweepy 获得的原始 json 推文转换为 csv,并且只有两个字段“created at”和“text”转换为 ASCII 我遇到错误,即 NameError "data_python" is not defined。 我很困惑。 提前谢谢你

这是我的代码

import json
import csv
try:
    data_json = open('nawaz.json', mode='r').read()
    data_python = json.loads(data_json) // here....
except Exception as e:
    print(str(e))

csv_out = open('tweets_out_ASCII.csv', mode='w')
writer = csv.writer(csv_out)

fields = ['created_at', 'text']
writer.writerow(fields)

for line in data_python:   // here it gives error
    writer.writerow([line.get('created_at'),   line.get('text').encode('unicode_escape'))]

csv_out.close()

这是我收到的错误

Traceback (most recent call last):
  File "json_to_csv.py", line 25, in <module>
    for line in data_python:
NameError: name 'data_python' is not defined

这是我的 json 示例

[![json example[![\]\[1\]][1]][1]

【问题讨论】:

  • 修正缩进。你有没有导入json?
  • 是的,我已经这样做了
  • @AsifKhan 确保您发布的代码重现了问题。了解如何制作minimal reproducible example
  • 兄弟我已经添加了我的测试结果
  • 你的例子不是 JSON。

标签: python json twitter nameerror


【解决方案1】:

当它抛出错误时,它会跳过分配给变量的过程,因为data_json 可能不是有效的 json。

考虑一下:

try:
    n = int('a')
except ValueError:
    pass

n 会是什么?不能将其分配给所有内容,因为引发的异常会使其跳过分配。

所以,你可以给它一个默认值:

try:
    data_json = open('nawaz.json', mode='r').read()
    data_python = json.loads(data_json)
except Exception:
    data_python = []  # Some default value

或者你不能只是不捕获异常而让它失败。

【讨论】:

  • "或者你不能捕获异常并让它失败。"出色的!当您无法处理异常时,为什么要捕获异常?否则我不会回答。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 2015-01-13
  • 2018-07-14
相关资源
最近更新 更多