-2
votes

Python Regex Capture Caractères après l'espace et un trait d'union

Cela devrait être simple, mais j'ai une période difficile à comprendre comment capturer la partie "-0400" de l'horodatage présenté ci-dessous.

2020-04-21 23: 59: 59.999-0400

Toute assistance serait appréciée. Je sais que je dois prendre un cours d'accident de regex.


1 commentaires

La pièce que vous souhaitez capturer suit le seul dot (. ) dans la chaîne et exactement trois chiffres. C'est ta regex!


3 Réponses :


0
votes

Pourquoi regex? En supposant que le format de votre chaîne est toujours exactement ceci, votre portion de fuseau horaire commence toujours à l'index 23, donc: xxx

devrait faire.


0 commentaires

0
votes

Je recommanderais de travailler avec le module code> DateTime CODE> car vous avez une date d'heure là-bas.
Vous recherchez le décalage UTC afin que vous puissiez utiliser cette méthode et diviser une heure pour obtenir le résultat en heures.

In [82]: utc_offset_hours('2020-04-21 23:59:59.999-0400')
Out[82]: -4.0


0 commentaires

2
votes

Je vais essayer de fournir la réponse à l'aide de la bibliothèque RE code>.

J'ai cassé chaque section dans des lignes distinctes afin que vous puissiez voir ce qui se passe, mais vous pouvez facilement le garder tout dans une seule ligne. Ajout du drapeau re.x code> Permet de construction de modèle verbose. P>

Fondamentalement, j'ai marqué toutes les parties de l'objet DateTime et vous pouvez utiliser re.search ( ) .group ("Nom du groupe ici") Code> Pour choisir votre variable. P>

In[3]: re.match(dt_pat, dt_neg_value, re.X).groupdict()
Out[3]: {'yr': '2020',
    'mth': '04',
    'dy': '21',
    'hh': '23',
    'mm': '59',
    'nn': '59',
    'ms': '999',
    'utc_off': '-0400'}


2 commentaires

Cette réponse a pris un peu de travail, +1. Lorsque le décalage est à l'avance, il y aura un + au lieu du - .


Bon point! Je l'ai mis à jour pour tenir compte de cela et a également ajouté un extrait pour les deux coupons. Ainsi, Londres est à +00: 00 , que ce motif mis à jour doit capturer. Comme s'il était écrit +0000 .