Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #3633

Re: Python, angles et heures. Datetime ?

From Dominique <zzz@aol.com.invalid>
Newsgroups fr.comp.lang.python
Subject Re: Python, angles et heures. Datetime ?
Date 2021-11-15 07:19 +0100
Organization Aioe.org NNTP Server
Message-ID <smsu5t$k3i$1@gioia.aioe.org> (permalink)
References <smr8cc$78l$1@gioia.aioe.org> <87ee7iilg8.fsf@universite-de-strasbourg.fr.invalid>

Show all headers | View raw


Le 14/11/2021 à 20:30, Alain Ketterlin a écrit :
> Dominique <zzz@aol.com.invalid> writes:


> 
> Il y a deux choses dans ta question : 1) vérifier que le texte a la
> bonne forme, et 2) le convertir en nombres. Et pour la première, une
> question annexe : le nombre de chiffres est-il fixe ? (Autrement dit :
> peut-on écrire "1:2.3" pour 1 degré 2 minutes 3 secondes, ou bien
> doit-on écrire "001:02.03" ?
> 
> Dans tous les cas on peut utiliser des expressions régulières (ou
> "rationnelles") pour faire le découpage :
> 
> import re
> 
> Ensuite, voici une version (pour les degrés) qui permet un nombre
> quelconque de chiffres dans chaque partie, convertit, et teste
> explicitement les valeurs :
> 
> ANGLE = re.compile ("([0-9]+):([0-9]+)[:.]([0-9]+)")
> def verif_degres (s):
>      m = ANGLE.fullmatch (s)
>      if m is None:
>          return None
>      else:
>          d,m,s = int (m[1]), int (m[2]), int (m[3])
>          if d < 360 and m < 60 and s < 60:
>              return d,m,s
>          else:
>              return None
> 
> Si tu veux exactement 3 chiffres (puis 2 puis 2), il faut le préciser à
> la place du "+" :
> 
> ANGLE = re.compile ("([0-9]{3}):([0-9]{2})[:.]([0-9]{2})")
> 
> On peut aussi vérifier l'intervalle de valeur avec une expression
> régulière un peu plus compliquée :
> 
> ANGLE_ALT = re.compile ("([0-2][0-9][0-9]|3[0-5][0-9])"
>                          ":"
>                          "([0-5][0-9])"
>                          "[:.]"
>                          "([0-5][0-9])")
> def verif_degres_alt (s):
>      m = ANGLE.fullmatch (s)
>      if m is None:
>          return None
>      else:
>          return (int (m[1]), int (m[2]), int (m[3]))
> 
> Mais franchement, je ne suis pas sûr que ça vaille le coup.
> 
>> Je regarde datetime
>> (https://docs.python.org/fr/3/library/datetime.html) mais je n'ai pas
>> l'impression d'y trouver ce que je cherche.
> 
> C'est plus adapté au calcul sur les dates et heures (un problème dont la
> complexité surprend souvent), pas tellement à la vérification du format
> textuel (via strptime), en tout cas pas pour des degrés.


Bonjour Alain,

Je te remercie pour ce retour très précis et qui... me conforte dans 
l'analyse que j'avais faite de ce problème. Je m'étais tourné vers les 
REGEX et avais écrit deux motifs :

  modele1='[0-9]{1,3}[:][0-9]{1,2}[.][0-9]{1,}'
  modele2='[0-9]{1,3}[:][0-9]{1,2}[:][0-9]{2}'

où je réglais la question du nombre de caractères avec {1,3} et {1,2} 
pour les minutes et secondes (Merci les REGEX de LibreOffice !) ainsi 
que de la décimalisation des minutes (mm.mm) classique en navigation 
astronomique.

Je pensais renforcer mon script avec tes lignes :

if d < 360 and m < 60 and s < 60:
               return d,m,s
else:
               return None

mais il me faudrait distinguer les heures (maxi 24) des angles... Placer 
un modulo derrière demanderait de distinguer l'un de l'autre... Le 
modulo interviendra dans le travail au-delà.

Ce que j'ignore, c'est le comportement de re.compile... À quoi sert-il ?

Bonne journée,
-- 
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es

Back to fr.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-14 16:01 +0100
  Re: Python, angles et heures. Datetime ? Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-11-14 20:30 +0100
    Re: Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-15 07:19 +0100
      Re: Python, angles et heures. Datetime ? Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-11-15 17:52 +0100
        Re: Python, angles et heures. Datetime ? Olivier Miakinen <om+news@miakinen.net> - 2021-11-15 17:59 +0100
          Re: Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-15 19:23 +0100
          Re: Python, angles et heures. Datetime ? Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-11-15 20:59 +0100
  Re: Python, angles et heures. Datetime ? Damien Wyart <damien.wyart@free.fr> - 2021-11-15 16:22 +0100
    Re: Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-16 06:28 +0100

csiph-web