首页 > 解决方案 > 如何在 PySpark 中转换“/Date(epoch time)/”字符串

问题描述

我有一个 json 文件,其中 json 中的所有日期都在/Date(1602949450000)/

json也是嵌套的。是否有一种通用的方法可以将所有内容解析/Date()/为时间戳?

我试过regexp_replace了,但我无法将捕获组转换为时间戳。

regexp_replace("value", "\\/Date\\((\\-?\\d*?)([\\+\\-]\\d*)?\\)\\/","$1")

标签: pythonpyspark

解决方案


您的正则表达式是正确的,但问题似乎是"$1". 当我用 a 运行代码时,1它对我有用:

dates_df = dates_df.withColumn(
    'date_extracted',
    F.regexp_extract("date", "\\/Date\\((\\-?\\d*?)([\\+\\-]\\d*)?\\)\\/", 1)
)

做同样事情的更简单的正则表达式是:

dates_df = dates_df.withColumn(
    'date_extracted',
    F.regexp_extract("date", "^.+(\d{13}).+$", 1)
)

推荐阅读