J'ai une chaîne dans une liste. Je veux diviser les valeurs en fonction de mon séparateur. Je ne veux utiliser aucune expression de regex. Regex l'effectue en une seule opération. Mais je veux utiliser pour les boucles et diviser () fonctions pour y parvenir. Comment rendre possible cela possible.
Voici mon code: sortie requise: p>
3 Réponses :
à l'aide d'utiliser sortie: strong> p> str.replace code> et str.split () code>
Bonne idée, mais cela suppose que la phrase devrait en réalité aussi i> être divisée à WhitSpace, qui n'est pas explicitement énoncée. (c.-à-d. Devant que 'a & b c' code> devenir ['a', 'b', 'c'] code> ou ['a', 'b c'] code>?) Au lieu de cela, vous pouvez simplement remplacer tous les caractères spéciaux par le premier (ou tout autre) de cette liste, par exemple '-' code>, puis do divisé ('-') code>.
Obtenir d'utiliser une expression régulière (qui serait em> la chose sensible à faire ici), vous pourriez par exemple. Utilisez itheroTools.groupby code> pour regrouper des caractères par s'ils sont des séparateurs ou non, puis gardez ces groupes qui ne sont pas. aa = ['prinec-how,are_you&&smile#isfine1']
separator = ["-",",","_","&","#"]
for s in separator:
aa = [x for a in aa for x in a.split(s) if x]
# aa: ['prinec', 'how', 'are', 'you', 'smile', 'isfine1']
Utilisation de à l'aide de la boucle p> sortie p> regex code>
juste à l'insu, pourquoi ne voulez-vous pas utiliser une regex?
"J'ai une chaîne dans une liste. Je veux diviser les valeurs basées sur mon séparateur. Je ne veux pas utiliser d'expression de regex." est une sorte de comme "j'ai un clou. Je veux le conduire dans un bloc de bois. Je ne veux pas utiliser de marteau."
Je veux en vérifier un par un sur la base de mon séparateur. Regex l'effectue en une seule opération. Je veux utiliser des boucles et des fonctions divisées () pour y parvenir
Vous réalisez qu'il n'y aura pas de différence observable dans le résultat, non? (Bien qu'il puisse y avoir une différence de performance, je devinerais que la regex serait plus rapide mais je ne peux pas en être sûr.)