Chaînes de caractères en Python

Chaînes de caractères en Python - Python - Programmation

Marsh Posté le 10-08-2021 à 10:06:46    

Bonjour
Ma question porte sur les chaînes en Python.
Si je considère la chaîne chn = "aaa", il me semble qu'elle contient deux fois la sous-chaîne "aa", la première en position 0, et la deuxième en position 1.
Mais l'instruction  

Code :
  1. chn.count('aa')


me renvoie 1.  
Quelqu'un pourrait-il m'éclairer ?


Message édité par jpl38 le 10-08-2021 à 10:07:39
Reply

Marsh Posté le 10-08-2021 à 10:06:46   

Reply

Marsh Posté le 10-08-2021 à 10:30:33    

https://docs.python.org/3/library/stdtypes.html
 

Citation :

str.count(sub[, start[, end]])
 
Return the number of non-overlapping occurrences of substring sub in the range [start, end]. Optional arguments start and end are interpreted as in slice notation.


---------------
click clack clunka thunk
Reply

Marsh Posté le 10-08-2021 à 12:30:36    

DDT a écrit :

https://docs.python.org/3/library/stdtypes.html
 

Citation :

str.count(sub[, start[, end]])
 
Return the number of non-overlapping occurrences of substring sub in the range [start, end]. Optional arguments start and end are interpreted as in slice notation.



Ok, merci. J'aurais dû prendre la peine d'aller voir la doc ...
Donc count ne sert qu'à dénombrer les divers caractères d'une chaîne.
Ça me semble un peu inabouti.

Reply

Marsh Posté le 13-08-2021 à 19:44:52    

Sinon en passant par du regex tu peux avoir les iterations et leur position assez facilement :  
 

Code :
  1. matches = re.finditer("(?=(aa))", "aaa" )


Puis tu itères sur les matches :  
 

Code :
  1. [(match.group(1), match.start()) for match in matches]


Résultat : [('aa', 0), ('aa', 1)]

Message cité 1 fois
Message édité par Feitan21 le 13-08-2021 à 19:45:14
Reply

Marsh Posté le 14-08-2021 à 11:40:25    

Feitan21 a écrit :

Sinon en passant par du regex tu peux avoir les iterations et leur position assez facilement :  
 

Code :
  1. matches = re.finditer("(?=(aa))", "aaa" )


Puis tu itères sur les matches :  
 

Code :
  1. [(match.group(1), match.start()) for match in matches]


Résultat : [('aa', 0), ('aa', 1)]


Merci, je vais creuser cette voie

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed