Je me demandais comment diviser correctement la chaîne lorsque vous avez un nombre inconnu de traits de soulignement. Mon entrée ressemble à ceci:
details = input.split("_")
words = details[0]
numbers = details[1]
Entre les mots et les nombres, il y a un nombre inconnu de traits de soulignement. Je dois diviser cette entrée en mots et en chiffres. J'ai essayé d'utiliser split de cette manière:
One Two_________1.0 2.0 3.0 Three Four______4.0 5.0 6.0 Five Six________7.0 8.0 9.0
Cependant, il ne sauvegarde correctement que les mots. Cela a fonctionné lorsque j'ai changé l'entrée pour n'avoir qu'un seul trait de soulignement, mais je ne peux tout simplement pas trouver la solution quand il a plusieurs traits de soulignement.
3 Réponses :
Vous pouvez utiliser des expressions régulières pour cela.
import re
re.split('_+', 'asd___fad')
>>> ['asd', 'fad']
Fondamentalement, cela signifie "fractionner lorsque vous voyez un trait de soulignement (le trait de soulignement dans le premier argument de split ) ou plus (le plus suivant ce trait de soulignement)"
Merci, cela a complètement résolu le problème! Cette solution était facile à implémenter dans mon programme et était claire à utiliser.
utilisez l'indexation négative. C'EST À DIRE. nombres = détails [-1]
vous pouvez également utiliser des expressions régulières (regex), mais celles-ci peuvent être compliquées à implémenter si vous ne comprenez pas ce que vous faites
En utilisant uniquement les fonctions intégrées:
# slices input from beginning to first underscore
words = input[:input.find("_")]
# slices input from first underscore to the end, then replaces "_" with "".
numbers = input[input.find("_"):].replace("_", "")
Double possible de Python séparant les délimiteurs consécutifs ou Comment puis-je fractionner par une ou plusieurs occurrences d'un délimiteur en Python? < / a>