如何轻松地将具有奇怪日期格式的 CSV 转换为指定格式?
How do I easily convert a CSV with a strange date format to a specified format?
与其说是编程,不如说这是一个与数据相关的问题,但我不确定 post 还有什么地方可以解决这个问题。如果它更适合其他地方,改装者可以自由移动它。
我正在尝试将银行导出的 CSV 导入 GNUcash,但 GNUcash 仅采用特定日期格式,例如 YYYY-MM-DD (1999-05-16),而我的银行仅导出为 YYYYMMDD (19990516) .
我不确定转换文件以供使用的最简单/最方便的方法是什么。使用复杂的正则表达式编写脚本 and/or 似乎过多但可能是必要的?
我尝试将其加载到 LibreOffice Calc 和 MS Excel 但找不到任何转换选项;使用自定义 YYYYMMDD 格式格式化单元格会破坏输出。我希望有更简单的方法来解决这个问题。如果没有,我可能最终会编写该脚本并将其放在网上的某个地方。
您可以使用 Notepad2 打开您的 CSV,勾选 regular expression search
并替换。
如果日期写在双引号和逗号之间:
,"([12][90][901]\d)([01]\d)([0123]\d)",
和
,"--",
对于更复杂的问题,Excel 宏或 Ruby 可以帮助您。
GNUcash 是对的——ISO 格式更好。
但是几乎 任何 脚本工具或语言都具有这方面的功能。在最基本的层面上,我们有 GNU 日期:
$ date --date=20161223 +%Y-%m-%d
2016-12-23
$
无论您最终做什么,请不要对日期使用正则表达式。使用日期和时间进行计算可能会很棘手,如果周围没有未成年人,可能需要使用更复杂的语言。使用可以解析和格式化日期的库。有多种可供选择。
我支持转换 csv 的建议。如果你可以/想要使用 R,anytime 包读取没有格式字符串的日期(和日期时间),并且日期的默认格式是你在这里需要的。 Python 也有功能强大的库,大多数其他脚本(和编译)语言也是如此。
您可以使用 LibreOffice Calc 或 MS 打开文件 Excel,然后用公式转换日期列。
假设你在A1中有19990516,然后用下面的公式换算
=日期(左(A1,4),中(A1,5,2),右(A1,2))
与其说是编程,不如说这是一个与数据相关的问题,但我不确定 post 还有什么地方可以解决这个问题。如果它更适合其他地方,改装者可以自由移动它。
我正在尝试将银行导出的 CSV 导入 GNUcash,但 GNUcash 仅采用特定日期格式,例如 YYYY-MM-DD (1999-05-16),而我的银行仅导出为 YYYYMMDD (19990516) .
我不确定转换文件以供使用的最简单/最方便的方法是什么。使用复杂的正则表达式编写脚本 and/or 似乎过多但可能是必要的?
我尝试将其加载到 LibreOffice Calc 和 MS Excel 但找不到任何转换选项;使用自定义 YYYYMMDD 格式格式化单元格会破坏输出。我希望有更简单的方法来解决这个问题。如果没有,我可能最终会编写该脚本并将其放在网上的某个地方。
您可以使用 Notepad2 打开您的 CSV,勾选 regular expression search
并替换。
如果日期写在双引号和逗号之间:
,"([12][90][901]\d)([01]\d)([0123]\d)",
和
,"--",
对于更复杂的问题,Excel 宏或 Ruby 可以帮助您。
GNUcash 是对的——ISO 格式更好。
但是几乎 任何 脚本工具或语言都具有这方面的功能。在最基本的层面上,我们有 GNU 日期:
$ date --date=20161223 +%Y-%m-%d
2016-12-23
$
无论您最终做什么,请不要对日期使用正则表达式。使用日期和时间进行计算可能会很棘手,如果周围没有未成年人,可能需要使用更复杂的语言。使用可以解析和格式化日期的库。有多种可供选择。
我支持转换 csv 的建议。如果你可以/想要使用 R,anytime 包读取没有格式字符串的日期(和日期时间),并且日期的默认格式是你在这里需要的。 Python 也有功能强大的库,大多数其他脚本(和编译)语言也是如此。
您可以使用 LibreOffice Calc 或 MS 打开文件 Excel,然后用公式转换日期列。
假设你在A1中有19990516,然后用下面的公式换算 =日期(左(A1,4),中(A1,5,2),右(A1,2))