Python divise les chaînes pour n'importe quel nombre de délimiteurs (code joint)

不言
Libérer: 2018-11-27 15:50:15
avant
3109 Les gens l'ont consulté

Le contenu de cet article concerne le fractionnement de chaînes Python avec n'importe quel nombre de délimiteurs (avec du code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

1. Exigences

Nous devons diviser la chaîne en différents champs, mais les délimiteurs (et les espaces entre les délimiteurs) ne sont pas cohérents dans la chaîne entière.

2. Solution

La méthode split() de l'objet chaîne ne peut gérer que des situations très simples et ne prend pas en charge plusieurs délimiteurs. Vous ne pouvez rien faire avec l'espace. situation. Lorsque des fonctions plus flexibles sont nécessaires, la méthode re.split() doit être utilisée :

import re
line='abc def ; ghi, jkl,mno, pkr'
#分隔符:分号,都逗号,空格符,前后可以跟着任意数量的额外空格
result=re.split(r'\s*[;,\s]\s*',line)
print(result)
Copier après la connexion

Résultat :

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
Copier après la connexion
Copier après la connexion

3. Analyse

re.split() est utile car plusieurs modèles peuvent être spécifiés pour les séparateurs. Par exemple, dans la solution ci-dessus, les délimiteurs sont : point-virgule, virgule, espace et peuvent être suivis de n'importe quel nombre d'espaces supplémentaires. Identique au résultat obtenu par str.split(), le résultat final est une liste de champs.

Lorsque vous utilisez re.split(), vous devez faire attention à ce que le groupe de capture dans le modèle d'expression régulière soit inclus entre parenthèses.

Si des groupes de capture sont utilisés, le texte correspondant sera également inclus dans le résultat final. Par exemple, jetez un œil au cas suivant :

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(;|,|\s)\s*',line)
print(result)
Copier après la connexion

Résultat :

['abc', ' ', 'def', ';', 'ghi', ',', 'jkl', ',', 'mno', ',', 'pkr']
Copier après la connexion

Il peut également être utile d'obtenir le délimiteur dans un contexte spécifique. Par exemple, utilisez des caractères délimiteurs pour améliorer la sortie des chaînes :

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(;|,|\s)\s*',line)

values=result[::2]
delimiters=result[1::2]+['']

print(values)
print(delimiters)

last=''.join(v+d for v,d in zip(values,delimiters))
print(last)
Copier après la connexion

Résultat :

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
[' ', ';', ',', ',', ',', '']
abc def;ghi,jkl,mno,pkr
Copier après la connexion

Si vous ne souhaitez pas voir de caractères délimiteurs dans les résultats, mais que vous souhaitez tout de même pour utiliser des symboles pour corriger l'expression régulière. Pour regrouper les modèles d'expression, assurez-vous d'utiliser un groupe non capturant, spécifié sous la forme de (?:...). L'exemple est le suivant :

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(?:;|,|\s)\s*',line)

print(result)
Copier après la connexion

Résultat :

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!