Le livre de recettes Python (String et Text) divise les opérations de chaîne pour un nombre quelconque de délimiteurs

不言
Libérer: 2018-04-19 13:40:37
original
1528 Les gens l'ont consulté

Cet article présente principalement le livre de recettes Python (String et Text) pour diviser des chaînes avec n'importe quel nombre de délimiteurs. Il analyse les opérations de fractionnement de chaînes de Python à l'aide de split() et d'expressions régulières sous forme d'exemples. reportez-vous à

pour des conseils d'implémentation. Cet article décrit l'opération de fractionnement de chaîne Python pour un nombre quelconque de délimiteurs. Partagez-le avec tout le monde pour référence, comme suit :

Problème : Diviser une chaîne avec des délimiteurs incohérents (et des espaces entre les délimiteurs) en différents champs ;

Solution : Utilisez la méthode re.split() plus flexible, qui peut spécifier plusieurs modèles pour le délimiteur.

Remarque : Le split() de l'objet chaîne ne peut gérer que des cas simples, et ne prend pas en charge plusieurs délimiteurs, et il ne peut rien faire sur les espaces possibles autour des délimiteurs.

# example.py
#
# Example of splitting a string on multiple delimiters using a regex
import re #导入正则表达式模块
line = 'asdf fjdk; afed, fjek,asdf,   foo'
# (a) Splitting on space, comma, and semicolon
parts = re.split(r'[;,\s]\s*', line)
print(parts)
# (b) 正则表达式模式中使用“捕获组”,需注意捕获组是否包含在括号中,使用捕获组导致匹配的文本也包含在最终结果中
fields = re.split(r'(;|,|\s)\s*', line)
print(fields)
# (c) 根据上文的分隔字符改进字符串的输出
values = fields[::2]
delimiters = fields[1::2]
delimiters.append('')
print('value =', values)
print('delimiters =', delimiters)
newline = ''.join(v+d for v,d in zip(values, delimiters))
print('newline =', newline)
# (d) 使用非捕获组(?:...)的形式实现用括号对正则表达式模式分组,且不输出分隔符
parts = re.split(r'(?:,|;|\s)\s*', line)
print(parts)
Copier après la connexion

>>> ================================ RESTART ================================
>>>
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo']
value = ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
delimiters = [' ', ';', ',', ',', ',', '']
newline = asdf fjdk;afed,fjek,asdf,foo
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
>>>
Copier après la connexion

(Le code est tiré de "Python Cookbook")

Recommandations associées :

PythonCookbook - Structures de données et algorithmes

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:php.cn
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