Fractionner une chaîne par un délimiteur en python


195

Comment diviser cette chaîne où se __trouve le délimiteur

MATCHES__STRING

Pour obtenir une sortie de ['MATCHES', 'STRING']?



8
Il vaut la peine de lire les documents standard de python et d'essayer de comprendre quelques programmes que d'autres ont créés pour commencer à comprendre les bases de Python. La pratique et la copie / modification sont d'excellents outils pour apprendre la langue.
Tony Veijalainen

Réponses:


327

Vous pouvez utiliser la str.splitfonction:string.split('__')

>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']

1
Je me demandais, quelle est la différence entre le premier exemple (en utilisant simplement split ()) et le deuxième exemple (avec une boucle for)?
EndenDragon

4
@EndenDragon La boucle for s'appliquera automatiquement x.strip()et renverra une liste de correspondances sans espace de chaque côté. Le diable est dans les détails.
Sébastien Vercammen

Hé, puisque c'est une question très populaire, je l'ai éditée pour ne poser qu'une seule question spécifique et j'ai supprimé la partie avec les espaces autour du délimiteur car il n'était pas clair ce que l'OP s'attendait même à ce qu'il se passe (puisqu'il n'y a jamais eu de question dans la question). Je pense que la question (et les réponses) sont plus utiles de cette façon, mais n'hésitez pas à annuler toutes les modifications si vous n'êtes pas d'accord.
Aran-Fey

4

Vous pouvez être intéressé par le csvmodule, qui est conçu pour les fichiers séparés par des virgules, mais qui peut être facilement modifié pour utiliser un délimiteur personnalisé.

import csv
csv.register_dialect( "myDialect", delimiter = "__", <other-options> )
lines = [ "MATCHES__STRING" ]

for row in csv.reader( lines ):
    ...

1

Lorsque vous avez deux ou plusieurs éléments (dans l'exemple ci-dessous, il y en a trois) dans la chaîne, vous pouvez utiliser une virgule pour séparer ces éléments:

date, time, event_name = ev.get_text(separator='@').split("@")

Après cette ligne de code, les trois variables auront des valeurs de trois parties de la variable ev

Donc, si la variable ev contient cette chaîne et que nous appliquons le séparateur '@':

Sa., 23. März @ 19: 00 @ Klavier + Orchester: SPEZIAL

Ensuite, après l'opération de fractionnement, la variable

  • la date aura la valeur "Sa., 23. März"
  • l'heure aura la valeur "19:00"
  • nom_événement aura la valeur "Klavier + Orchestre: SPEZIAL"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.