【问题标题】:PRAW: Python can print Reddit comment variable but not return itPRAW:Python 可以打印 Reddit 评论变量但不能返回它
【发布时间】:2017-10-30 09:25:12
【问题描述】:

我已经阅读了 this answera second answerthis answer 关于将返回与循环混合,最后是 this answer 关于返回,但它们不适用于这里。

问题:我可以打印评论日期,但我似乎无法正确“返回”它。最终,我需要将日期添加到列表中。

import datetime
def get_date(submission):
    time = submission.created
    return datetime.datetime.fromtimestamp(time)

authors_list = []
date_list = []

# Problem is here: 
for comment in submission.comments.list():
    authors_list.append(comment.author) # works fine!
    date_list.append(get_date(comment)) # does not work

print authors_list 
print date_list # does not work

我希望日期列表返回

[2013-06-22 12:28:54, 2014-06-22 12:28:54, 2015-06-22 12:28:54]

但是我得到了:

[datetime.datetime(2013, 6, 22, 3, 4, 7), datetime.datetime(2013, 6, 22, 10, 33, 47)...] 

我的尝试:

尝试将日期保存到循环内的变量中,但它不起作用:(我得到与上面相同的输出)

date_list = [ ]
for comment in submission.comments.list():
    a_date = get_date(comment)
    date_list.append(a_date)
print date_list

>>> [datetime.datetime(2013, 6, 22, 3, 4, 7) ...]

我该如何解决这个问题?谁能解释为什么会这样?谢谢!

上下文:如果有任何相关性,我正在使用praw v5.2.0 从 Reddit API 中提取数据。

【问题讨论】:

  • 您是否尝试过打印返回的列表?
  • 您对“不起作用”的定义似乎有点误导。您的问题实际上是关于将日期时间转换为字符串?
  • 您“期望日期列表返回”的东西不是有效的 Python 文字。你得到一个日期时间列表,这似乎是你想要的,那么问题是什么?
  • @LSelter 是的,打印返回的列表会返回所需的答案(即 2013-06-22 12:28:54 ... )。但是我想将它附加到一个列表中,如果我只是打印结果,我就不能这样做
  • @jonrsharpe 我有一个函数可以将日期转换为“dd-mm-yyyy”,当我打印它时它可以工作。 问题 是当我尝试使用date_list.append(get_date(comment)) 返回(?)时,它没有返回相同的格式。为什么格式会改变,我怎样才能把它改回来? (编辑)对不起,如果这个问题听起来很尴尬,我不知道如何表达它

标签: python python-2.7 reddit praw


【解决方案1】:

如果我理解正确,并且您只想存储日期时间对象的字符串表示形式,请尝试以下操作:

# Problem is here: 
for comment in submission.comments.list():
    authors_list.append(comment.author) # works fine!
    date_list.append(str(get_date(comment))) # should now work as expected

在您的原始代码中,您将datetime.datetime 对象添加到您的列表并返回,显然您只是在获得一个字符串列表之后,因此将您的get_date() 调用包装在str() 调用中可以实现这一点。尽管稍后如果您仍然需要在此函数之外访问datetime 对象功能,那么稍后执行此操作可能会更好。并在使用时转换为字符串。

【讨论】:

  • 谢谢!!它有效 :-) 如果你有时间,你介意解释一下我的问题吗?
【解决方案2】:

您可以将datatime.datatime对象转换为String添加strftime返回句子。

datetime.datetime.fromtimestamp(time).strftime("%Y-%m-%d %H:%M:%S")

【讨论】:

    猜你喜欢
    • 2014-11-16
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多