Comment diviser une chaîne à des positions avant un personnage?
La manière évidente ne fonctionne pas: p>
7 Réponses :
>>> r.findall("fffagggaahhh")
['fff', 'aggg', 'ahhh']
Je me demande si l'OP voudrait garder la chaîne vide de la scission si elle a commencé avec un "A".
-1 Uncool. Échoue sur les réponses répétées ... E.G. "AAA" -> Liste vide
OK, pas exactement la solution que vous voulez, mais je pensais que ce sera un ajout utile au problème ici.
solution sans re p> blockQuote>
sans re: p>
xxx pré> p>
@knitti: merci. Je comprends que ce n'est pas la solution de REI et je voulais l'écrire d'abord avant d'écrire une solution. À ce moment-là, j'ai fini d'écrire cela, la solution à base de RE venue.
Ouais, pourquoi utiliser un marteau sur un seul clou si vous avez un tireur à ongles.
split () code> prend une dispute pour le caractère à scinder sur:
>>> rx = re.compile("(?:a|^)[^a]*")
>>> rx.findall("fffagggahhh")
['fff', 'aggg', 'ahhh']
>>> rx.findall("aaa")
['a', 'a', 'a']
>>> rx.findall("fgh")
['fgh']
>>> rx.findall("")
['']
-1 re.findall ("(?: ^ | a) [^ a] *", "aaa") code> produit ['', 'A'] Code>
>>> foo = "abbcaaaabbbbcaaab"
>>> bar = foo.split("c")
>>> baz = [bar[0]] + ["c"+x for x in bar[1:]]
>>> baz
['abb', 'caaaabbbb', 'caaab']
Due to how slicing works, this will work properly even if there are no occurrences of c in foo.
>>> print list(split_before("a","afffagggahhhaab"))
['', 'afff', 'aggg', 'ahhh', 'a', 'ab']
>>> print list(split_before("a","ffaabcaaa"))
['ff', 'a', 'abc', 'a', 'a', 'a']
>>> print list(split_before("a","aaaaa"))
['', 'a', 'a', 'a', 'a', 'a']
>>> print list(split_before("a","bbbb"))
['bbbb']
>>> print list(split_before("a",""))
['']
Celui-ci fonctionne sur l'approche répétée "Les principaux morceaux que vous recherchez sont un a code> code> 'S pré> A code> suivi par zéro ou plus non- a code>. Qui couvre toutes les possibilités, à l'exception de zéro ou de plus non - a code>. Cela ne peut arriver qu'au début de la chaîne d'entrée. P> p>
Que vous attendez-vous lorsque vous avez divisé
"aaa" code> -['', 'a', ',' a ',' a '] code> ou[' a ', 'A', 'A'] CODE>?"AAA" -> "A", "A", "A" ou "", "A" A "," A "," A "
Merci pour toutes les réponses du travail!
-1: "AAA" -> ["A", "A", "A"] ou ["", "A", "A", "A"]. C'est la chose la moins utile que j'ai jamais vue. Les deux ont raison? Dans ce cas, aucun modèle ne peut jamais fonctionner. Fermer cette question.
soit l'un d'eux le fera. Si vous avez déjà codé dans Python, vous sauriez un filtre simple (BOOL, L) filtrera l'élément vide.
@ user496852: "L'un ou l'autre d'entre eux fera". Faux. Le modèle B> est totalement différent. Nous ne pouvons pas interpréter votre question sans un fait absolu et absolu. Veuillez choisir un comme le sens "correct" de votre question ou de le fermer. Un seul modèle est "juste". L'autre peut être dérivé. Mais on est "approprié".
"AAA" -> ["", "A", "A", "A"] est la "bonne" exigence, si vous insistez. :)
Quelque chose changea-t-il dans Python? Maintenant, votre "manière évidente" fonctionne parfaitement.