将带有亚洲字符的 UTF-16LE 字符串转换为 DateTime

Converting UTF-16LE string with asian characters to DateTime

我正在解析由 PowerShell 生成的大量 csv 文件。

大部分如下所示:

".txt"@"12/01/2017 4:47:55 PM"@"12/01/2017 4:47:55 PM"@"12/01/2017 4:47:55 PM"@"0"

但有些看起来像这样:

.pptx@"2017-02-20 오후 4:30:39"@"2017-02-20 오후 4:30:39"@"2015-11-12 오후 7:32:11"@"13387528"

我想从时间戳中解析 DateTime 对象,但失败了:

pd.to_datetime ("2017-02-20 PM 4:30:39", format='%Y-%m-%d %p %I:%M:%S')
Timestamp('2017-02-20 16:30:39')

pd.to_datetime ("2017-02-20 오후 4:30:39", format='%Y-%m-%d %p %I:%M:%S')
ValueError: time data '2017-02-20 오후 4:30:39' does not match format '%Y-%m-%d %p %I:%M:%S' (match)

我可以通过以十六进制打开文件并将相应的'\uc624\ud6c4'替换为'AM/PM'来解决这个问题。

我是否缺少解决此问题的更方便的方法?

strftime 没有这方面的功能,但我以前用过的一个技巧是删除字符串中可能存在外来字符的位:

pd.to_datetime(" ".join(np.array("2017-02-20 오후 4:30:39".split(" "))[[0, -1]]), 
               format='%Y-%m-%d %I:%M:%S')

我不会称之为 "elegant"。但它有效。