OpenRefine:在一列值中交换订单字符串

OpenRefine: swapping order strings within a column of values

我有一列值的日期范围格式为 DD Month YYYY,但我希望它显示为 Month DD YYYY。因此,例如“2021 年 10 月 14 日”应该是“2021 年 10 月 14 日”——在 OpenRefine 中是否有一种简单的方法可以做到这一点?

谢谢!

根据 google 搜索,似乎有一个名为 Jython 的 python 库。如果你安装了,你可以试试。

result = re.sub('(\d+).(\w+).(\d+)', r'  ', input) 

2021 年 10 月 14 日

\d+ matches 14
\w+ matches October 
\d+ matches 2021

()将他们分组,所以(\d+)是第一组,(\w+)是第二组。然后,您使用 \2 \1 \3 来指代这些组,本质上是说,将第 2 组,10 月移到开始,第 1 组,14,移到中间,第 3 组,2021 年,留在原处。 这在 R 中有效,我并没有真正使用 python 但看起来您需要在前面使用 r' ,如上所述,因此 \ 被视为转义字符。

您可以使用 date functions in OpenRefine 来解析和格式化日期。

你的情况是:

value.toDate("dd MMMM yyyy").toString("MMMM dd yyyy")

请注意,使用月份的长格式是上下文相关的。 这意味着在法语计算机上解析英文月份名称将不起作用。

我会使用空白作为分隔符将列拆分为三个:

  1. 按要求的顺序重新排列列,然后使用连接或

    重新组合它们
  2. 使用以下方法创建新列:

    cells['Month'].value+cells['DD'].value+cells['YYYY'].value