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

时间:2017-03-17 01:19:55

标签: python pandas datetime utf

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

大部分内容如下:

  

" .txt" @" 12/01/2017 4:47:55 PM" @" 12/01/2017 4:47:55 PM" @" 2017年12月1日   下午4:47:55" @" 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'。

我错过了解决此问题的更方便方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

我不会称之为“优雅”。但它确实有效。