如何轻松将具有奇怪日期格式的CSV转换为指定格式?

时间:2016-12-23 17:47:24

标签: excel csv datetime type-conversion gnucash

这是一个与编程相关的数据问题,但我不确定在哪里发布它。如果它更适合其他地方,modders可以自由移动它。

我试图将银行导出的CSV导入GNUcash,但GNUcash只采用特定的日期格式,如YYYY-MM-DD(1999-05-16),而我的银行只导出为YYYYMMDD(19990516)

我不确定将文件转换为最简单/最方便的方法。编写脚本和/或使用复杂的正则表达式似乎过多但可能是必要的?

我尝试将其加载到LibreOffice Calc和MS Excel中,但无法找到任何转换选项;使用自定义YYYYMMDD格式格式化单元格会破坏输出。我希望有一种更简单的方法来解决这个问题。如果没有,我可能最终会编写该脚本并将其放在某处。

3 个答案:

答案 0 :(得分:1)

您可以使用Notepad2打开CSV,勾选regular expression search并替换。

如果日期是用双引号和逗号之间写的:

,"([12][90][901]\d)([01]\d)([0123]\d)",

,"\1-\2-\3",

对于任何更复杂的东西,Excel宏或Ruby都可以帮到你。

答案 1 :(得分:1)

GNUcash是对的 - ISO格式更好。

但只是任何脚本工具或语言都有相应的功能。在最基本的层面上,我们有GNU日期:

$ date --date=20161223 +%Y-%m-%d
2016-12-23
$ 

无论你最终做什么,请不要使用正则表达式来表示日期。计算日期和时间可能很棘手,如果周围没有未成年人,可能需要更多更咸的语言。使用可以解析和格式化日期的库。 许多可供选择。

我的第二个建议是转换csv。如果您可以/想要使用R,anytime包读取日期(和日期时间)而没有格式字符串,并且日期的默认格式就是您需要的。 Python也有能力的库,大多数其他脚本(和编译)语言也是如此。

答案 2 :(得分:0)

您可以使用LibreOffice Calc或MS Excel打开文件,然后使用公式转换日期列。

让我们说在A1中你有19990516,然后使用以下公式转换 =日期(左(α-1,4),中期(A1,5,2),右(A1,2))