Comment supprimer tous les espaces dans une chaîne python? Par exemple, je veux qu'une chaîne strip my spaces
soit transformée en stripmyspaces
, mais je n'arrive pas à y parvenir avec strip()
:
>>> 'strip my spaces'.strip()
'strip my spaces'
python
python-3.x
spaces
strip
mauvais nom d'utilisateur
la source
la source
Réponses:
Profitant du comportement de str.split sans paramètre sep:
Si vous souhaitez simplement supprimer des espaces au lieu de tous les espaces:
Optimisation prématurée
Même si l'efficacité n'est pas l'objectif principal - l'écriture de code clair l'est - voici quelques horaires initiaux:
Notez que l'expression régulière est mise en cache, elle n'est donc pas aussi lente que vous l'imaginez. Le compiler au préalable en aide certains, mais cela n'aurait d'importance en pratique que si vous appelez cela plusieurs fois:
Même si re.sub est 11,3 fois plus lent, rappelez-vous que vos goulots d'étranglement sont assurément ailleurs. La plupart des programmes ne remarqueraient pas la différence entre ces 3 choix.
la source
\s+
substitution. Je m'en tiendrai à re.s.translate
méthode par hasard? Il bat probablement toutes les méthodes présentées sur cette page.None
- bien que, étonnamment, cela le rend plus lent ...myString.translate(None, " \t\r\n\v")
. Cela ne prend que 83% aussi longtemps que la technique la plus rapide de Roger (division et jointure). Je ne sais pas si cela couvre tous les caractères d'espace blanc que le fractionnement fait, mais cela suffira probablement pour la plupart des applications ASCII.Gère également tous les caractères d'espaces auxquels vous ne pensez pas (croyez-moi, il y en a beaucoup).
la source
Alternativement,
Et voici la version Python3:
la source
NameError: name 'string' is not defined
.import string
Le plus simple est d'utiliser replace:
Vous pouvez également utiliser une expression régulière:
la source
Supprimer les espaces de départ en Python
Supprimer les espaces de fin ou de fin en Python
Supprimez les whiteSpaces du début et de la fin de la chaîne en Python
Supprimez tous les espaces en python
la source
Essayez une regex avec
re.sub
. Vous pouvez rechercher tous les espaces et les remplacer par une chaîne vide.\s
dans votre modèle correspondra aux caractères d'espacement - et pas seulement à un espace (tabulations, retours à la ligne, etc.). Vous pouvez en savoir plus à ce sujet dans le manuel .la source
la source
Comme mentionné par Roger Pate, le code suivant a fonctionné pour moi:
J'utilise Jupyter Notebook pour exécuter le code suivant:
la source
Les techniques standard pour filtrer une liste s'appliquent, bien qu'elles ne soient pas aussi efficaces que les méthodes
split/join
outranslate
.Nous avons besoin d'un ensemble d'espaces blancs:
L'
filter
intégré:Une liste de compréhension (oui, utilisez les crochets: voir référence ci-dessous):
Un pli:
Référence:
la source
TL / DR
Cette solution a été testée avec Python 3.6
Pour supprimer tous les espaces d'une chaîne en Python3, vous pouvez utiliser la fonction suivante:
Pour supprimer des espaces ('\ t \ n \ r \ x0b \ x0c'), vous pouvez utiliser la fonction suivante:
Explication
La
str.translate
méthode de Python est une méthode de classe intégrée de str, elle prend une table et retourne une copie de la chaîne avec chaque caractère mappé via la table de traduction passée. Documentation complète pour str.translatePour créer la table de traduction
str.maketrans
est utilisé. Cette méthode est une autre méthode de classe intégrée destr
. Ici, nous l'utilisons avec un seul paramètre, dans ce cas un dictionnaire, où les clés sont les caractères à remplacer mappés aux valeurs avec la valeur de remplacement des caractères. Il renvoie une table de traduction à utiliser avecstr.translate
. Documentation complète pour str.maketransLe
string
module en python contient des opérations et des constantes de chaîne courantes.string.whitespace
est une constante qui renvoie une chaîne contenant tous les caractères ASCII considérés comme des espaces. Cela inclut l'espace de caractères, la tabulation, le saut de ligne, le retour, le saut de page et la tabulation verticale. Documentation complète pour la chaîneDans la deuxième fonction
dict.fromkeys
est utilisée pour créer un dictionnaire où les clés sont les caractères de la chaîne retournés parstring.whitespace
chacun avec valeurNone
. Documentation complète pour dict.fromkeysla source
Si des performances optimales ne sont pas une exigence et que vous voulez juste quelque chose de très simple, vous pouvez définir une fonction de base pour tester chaque caractère à l'aide de la méthode intégrée "isspace" de la classe de chaîne:
Construire la
no_white_space
chaîne de cette manière n'aura pas des performances idéales, mais la solution est facile à comprendre.Si vous ne voulez pas définir une fonction, vous pouvez la convertir en quelque chose de vaguement similaire avec la compréhension de liste. Emprunter de la
join
solution de la meilleure réponse :la source