web-dev-qa-db-fra.com

Fractionner la chaîne sur les espaces dans Python

Je cherche l'équivalent Python de

String str = "many   fancy Word \nhello    \thi";
String whiteSpaceRegex = "\\s";
String[] words = str.split(whiteSpaceRegex);

["many", "fancy", "Word", "hello", "hi"]
396
siamii

La méthode str.split() sans argument se divise en espaces:

>>> "many   fancy Word \nhello    \thi".split()
['many', 'fancy', 'Word', 'hello', 'hi']
725
Sven Marnach
import re
s = "many   fancy Word \nhello    \thi"
re.split('\s+', s)
62
Óscar López

Une autre méthode à travers le module re. Il effectue l'opération inverse consistant à faire correspondre tous les mots au lieu de cracher toute la phrase par un espace.

>>> import re
>>> s = "many   fancy Word \nhello    \thi"
>>> re.findall(r'\S+', s)
['many', 'fancy', 'Word', 'hello', 'hi']

Au-dessus de regex correspondrait à un ou plusieurs caractères non-espace.

14
Avinash Raj

Utiliser split() sera le moyen le plus Pythonic de diviser une chaîne.

Il est également utile de se rappeler que si vous utilisez split() sur une chaîne ne contenant pas d'espaces, cette chaîne vous sera renvoyée dans une liste.

Exemple:

>>> "ark".split()
['ark']
12
Robert Grossman