【问题标题】:How to convert non string type data to string in python?如何在python中将非字符串类型的数据转换为字符串?
【发布时间】:2020-05-22 15:13:42
【问题描述】:

编辑 我不想将datetime转换为日期,还有其他几个不带引号的单词,我只需要将不带引号的单词转换为字符串。

我正在从数据库中检索一些数据并对其进行处理。我在 ast.literal eval 中遇到错误,因为它没有以正确的格式获取数据。比如看数据

'星链', datetime.datetime(2020, 5, 23, 0, 0), datetime.date(2020, 10, 23), '星链'

这正是我在没有日期时间单词引号的情况下得到它的方式。由于错误插入了日期时间对象。现在如何将 datetime.datetime(2020, 5, 23, 0, 0) 转换为字符串。最终我需要将所有这些逗号分隔的单词转换为一个列表。但我不能用 (,) 拆分,因为有些句子由 (,) 逗号组成 看代码

所以以前的元数据将是 'Starlink', datetime.datetime(2020, 5, 23, 0, 0), datetime.date(2020, 10, 23), 'starlink' 作为数据库中的一行

previous_meta_data = previous_meta_data.lstrip(' ')
previous_meta_data = previous_meta_data.rstrip(' ')
#previous_meta_data = previous_meta_data[1:-1]
#print(previous_meta_data)
previous_meta_data = re.sub("'\s*([^']*?)\s*'", r"'\1'", previous_meta_data)
#previous_meta_data = previous_meta_data.replace('\\','')
#print(type(previous_meta_data))
import ast
import json
previous_meta_data =ast.literal_eval(previous_meta_data)

有人可以帮我解答吗?

【问题讨论】:

  • 不,这并不重要,我只需要将任何不带引号的此类数据转换为字符串,例如 datetime.datetime(2020, 5, 23, 0, 0).strftime 应该是字符串 """ datetime .datetime(2020, 5, 23, 0, 0).strftime """ 我不想把它转换成日期@Ch3steR
  • repr(datetime.datetime(2020, 5, 23, 0, 0))'datetime.datetime(2020, 5, 23, 0, 0)' 这就是你要找的吗?
  • @Ch3steR 正确,但 ast.literal 并未将其视为字符串。
  • @Pritish 您可以使用str() 将数据转换为字符串。 data = 'Starlink', datetime.datetime(2020, 5, 23, 0, 0), datetime.date(2020, 10, 23), 'starlink' 并使用:str(data)
  • 我已经这样做了,但它仍然不会将 datetime.datetime(2020, 5, 23, 0, 0) 单独视为字符串。 @DavidDr90

标签: python python-3.x


【解决方案1】:

如果您只想将日期转换为字符串。那么——

将日期时间转换为日期,然后将其转换为字符串

x = x.date()
x.strftime("%m/%d/%Y")

否则试试:

x.strftime("%m/%d/%Y, %H:%M")

或者你也可以查看str(x)

您还可以更改日期时间的格式。

【讨论】:

  • 您好,请看编辑,我已经提到我不想转换日期,我希望整个事情像 """datetime.datetime(2020, 5, 23, 0, 0).strftime """ 但 ast.literal.eval 不将其视为正确的字符串
猜你喜欢
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2010-09-17
  • 2013-10-16
相关资源
最近更新 更多