2017-03-17 1 views
0

Je suis en train d'analyser un grand nombre de fichiers csv générés par PowerShell.Conversion d'une chaîne UTF-16LE avec des caractères asiatiques en DateTime

La majeure partie se présente comme suit:

"txt "@" 01/12/2017 16:47:55 "@" 01/12/2017 16:47:55" @ "01/12/2017 16:47:55 " @ "0"

Mais certains des regards comme celui-ci:

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

Je voudrais analyser les objets DateTime de horodatages, mais il échoue:

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) 

Je peux faire face à ce problème en ouvrant un fichier en hexadécimal et juste remplacer correspondant \ uc624 \ ud6c4 'avec 'MATIN APRÈS-MIDI'.

Ai-je manqué un moyen plus pratique de résoudre ce problème?

Répondre

1

strftime n'a pas une fonction pour cela, mais un truc que je l'ai utilisé avant est d'exciser le peut-bit caractère étranger de la chaîne:

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

Je ne dirais pas que cette « élégante ". Mais ça fonctionne.

+0

Oui, je fais quelque chose de similaire en ce moment. Merci! – CaptainTrunky

+0

Ouais travailler avec 'strftime' est assez janky unf. –