Quel est le moyen le plus court de le faire en python?
string = " xyz"
7 Réponses :
(...).next()
bla.strip () code> et
bla.isspace () code> fonctionne ok avec Unicode; String.WhitSpace est gelée au cours du siècle dernier.
@John: dit qui? Je vois string.whitespace code> comme deuxième approche la plus efficace après l'acceptation de l'une.
Re-lisez mon commentaire. Je parle de travailler avec Unicode; Aucune mention d'efficacité.
>>> s = " xyz" >>> len(s) - len(s.lstrip()) 3
Si S est long et que le préfixe des espaces est court, d'autres solutions (celles qui ne prennent pas une température presque-copie de S, de la longueur de la longueur, puis de lancer l'objet TEMP) peuvent être préférables.
@Johnmachin String est immuable dans Python, donc je doute vivement que l'interprète fait une copie pour bande () code>. La chaîne d'origine peut simplement être réutilisée avec une position de départ différente.
>>> string = " xyz" >>> next(idx for idx, chr in enumerate(string) if not chr.isspace()) 3
-1 comme il échoue pour toute chaîne entièrement blanchissante ... "STOVITÉTRATION:" B> Erreur est émise dans ce cas
>>> string = " xyz" >>> map(str.isspace,string).index(False) 3
-1 Comme il échoue pour toute chaîne entièrement blanchissante ... :( "ValueError: Faux n'est pas dans la liste" b>
On dirait que les "regexes peuvent faire quelque chose" de la brigade ont pris le jour de congé, donc je vais remplir: fwiw: le temps pris est O (the_answer), pas O ( len (input_string)) p> p>
import re def prefix_length(s): m = re.match('(\s+)', s) if m: return len(m.group(0)) return 0
"" "Assurez-vous que votre code" ne fait rien "gracieusement." "- Attribué à Jon Bentley IIRC.
Pardonne-moi mon ignorance, mais qui est lui?
L'ignorance est pardonnable; La réticence d'utiliser un moteur de recherche est une autre question ;-) en.wikipedia.org/wiki/jon_bentley
@Johnmachin - d'oh ... bon point sur + code> au lieu de
* code>. Mon casquette de pensée n'était pas complètement ce matin.
Aussi, vous avez des parenthèses redondantes.
Beaucoup de solutions précédentes sont itérantes à plusieurs points de leurs solutions proposées. Et certains font des copies des données (la chaîne). Re.Match (), Strip (), Enumérer (), Isspace () Duplagage derrière le travail de la scène. Les
i = 0 while i < len(s) and s[i] == ' ': i += 1 print i 3
Presque duplicata de: Stackoverflow.com / Questions / 2268532 / ...