我的CSV文件格式如下
Column_date
我想转换名为08-jun-2017 00:00 to UP (ENG)
示例:17W23D4 to UP (ENG)
应转换为17
格式为世纪W23
年;一年中的一周D4
;星期几Column_a,Column_b,Column_c,Column_date
a,b,c,17W23D4 to UP (ENG)
。日期从星期一(1)到星期日(7)。
所以最终的CSV应如下所示:
.bat
如果可以在 allprojects {
repositories {
jcenter()
mavenCentral()
maven {
url "https://maven.google.com"
}
}
}
文件中执行,那会很棒,但另一种脚本语言也可以。
答案 0 :(得分:2)
在Perl中,您可以使用Time::Piece:
$ perl -MTime::Piece -wE '
$tp = Time::Piece->strptime("08-jun-2017 00:00", "%d-%b-%Y %H:%M");
say $tp->yy, "W", $tp->week, "D", $tp->day_of_week'
17W23D4
首先,您需要从字符串中提取日期和时间。
您可以使用-F,
将逗号上的每一行拆分为@F数组,然后使用正则表达式提取时间戳:
perl -MTime::Piece -F, -anE '
print, next if $. == 1;
($timestring, $rest)
= pop(@F) =~ /([0-9]{2}-[a-z]{3}-[0-9]{4} [0-9]{2}:[0-9]{2})(.*)/;
$tp = Time::Piece->strptime($timestring, "%d-%b-%Y %H:%M");
say join ",", @F, $tp->yy . "W" . $tp->week . "D" . $tp->day_of_week . $rest;
' -- input.csv
IIRC,在MSWin上你需要切换单引号和双引号。
答案 1 :(得分:-1)
我想转换名称为Column_date
以下 Python 解决方案基于datetime
— Basic date and time types文档。请向下滚动至strftime()
and strptime()
Behavior部分,了解%y
,%V
,%u
,......指令的含义:
^^> python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)]
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> from datetime import datetime
>>>
>>> ColDateOld = '08-jun-2017 00:00' ### extract from `CSV`
>>> ColDateNew = datetime.strptime(ColDateOld, '%d-%b-%Y %H:%M').strftime("%yW%VD%u")
>>> print( ColDateNew) ### populate the result
17W23D4
>>>
>>>