【问题标题】:Read specific part of json string with python用python读取json字符串的特定部分
【发布时间】:2018-07-04 16:28:03
【问题描述】:

我目前正在 django 环境中开发一个程序,该程序使用第三方提供的 json api 运行。该 API 中有一个我想要的对象,但是它提供的信息字符串对我来说太多了。

我想要的数据是使用 tweepy 的 twitter api 中的 created_at 标签。这个 created_at 包含以下格式的数据:

"created_at": "Mon Aug 27 17:21:03 +0000 2012"

这一切都很好,但是这将返回日期和时间,而我只想要上面示例的时间部分,即 17:21:03。

有什么方法可以将 created_at 响应字符串的这一部分存储在一个单独的变量中?

【问题讨论】:

  • 使用正则表达式..
  • @advay.umare 你能详细说明一下吗?
  • m = re.findall(r'\d+:\d+:\d+',s)
  • 最好使用适当的日期时间解析器(内置 datetime 模块、dateutil.parserarrow 等)。

标签: python json django twitter tweepy


【解决方案1】:

试试下面的代码。

my_datetime = response_from_twitter['created_at']
my_time = my_datetime.split(' ')[3]

# my_time will now contain time part.

【讨论】:

    【解决方案2】:

    您可以将字符串拆分为一个列表并获取第 4 个元素:

    time = source['created_at'].split(' ')[3]
    

    【讨论】:

      【解决方案3】:

      您可以使用 dateutil 模块

      from dateutil import parser
      
      created_at = "Mon Aug 27 17:21:03 +0000 2012"
      created_at = parser.parse(created_at)
      print created_at.time()
      

      输出:

      17:21:03
      

      【讨论】:

      • 当我打印这个时,我收到以下消息:AttributeError: 'datetime.datetime' object has no attribute 'read'
      • @AdamDalton;该错误看起来与此解决方案无关。
      • 好的问题是我没有在 pip 中安装 dateutil 但是现在我收到错误消息:TypeError: Parser must be a string or character stream, not datetime
      • 我通过将变量转换为字符串来实现它
      【解决方案4】:

      re.search() 的正则表达式怎么样:

      >>> import re
      >>> d = {"created_at": "Mon Aug 27 17:21:03 +0000 2012"}
      >>> re.search('\d{2}:\d{2}:\d{2}', d['created_at']).group(0)
      '17:21:03'
      

      【讨论】:

        猜你喜欢
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 2016-10-06
        • 2021-11-18
        • 2012-07-25
        • 1970-01-01
        • 2011-12-03
        • 1970-01-01
        相关资源
        最近更新 更多