J'essaie de supprimer les 3 derniers caractères d'une chaîne en python, je ne sais pas ce que sont ces caractères donc je ne peux pas utiliser rstrip
, j'ai également besoin de supprimer tout espace blanc et de convertir en majuscules
un exemple serait:
foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()
Cela fonctionne et me donne BS12 qui est ce que je veux, mais si les 4ème et 3ème derniers caractères sont les mêmes, je perds les deux, par exemple si foo = "BS11 1AA"
je viens de recevoir'BS'
des exemples de foo
pourraient être:
BS1 1AB
bs11ab
BS111ab
La chaîne peut contenir 6 ou 7 caractères et je dois supprimer les 3 derniers (en supposant qu'il n'y a pas d'espace blanc)
Des conseils?
''.join(foo.split())
c'est mieux quefoo.replace(' ', '')
, lorsqu'il est utilisé sur des chaînes Unicode, car il supprime tout caractère d' espacement , en plus du' '
caractère (en particulier, les espaces insécables sont également supprimés). Cela dit,replace()
c'est probablement beaucoup plus rapide, donc il peut être utilisé si, par exemple, les chaînes d'entrée sont connues pour être codées en ASCII, qui n'a qu'un seul caractère d'espace (j'utilise la terminologie Python 2, ici.)Cela ne fonctionne pas comme prévu car la bande est basée sur des caractères. Vous devez le faire à la place:
la source
la source
Vous avez peut-être mal compris légèrement rstrip, il ne supprime pas une chaîne mais n'importe quel caractère de la chaîne que vous spécifiez.
Comme ça:
Alors à la place, utilisez simplement
(après avoir remplacé les espaces par rien)
la source
la source
J'essaie d'éviter les expressions régulières, mais cela semble fonctionner:
string = re.sub("\s","",(string.lower()))[:-3]
la source
Quel est le problème avec ça?
la source
split
slice
concentrate
C'est un bon entraînement pour les débutants et c'est facile à réaliser.
Une autre méthode avancée est une fonction comme celle-ci:
Et pour cette question, vous voulez simplement supprimer les derniers caractères, vous pouvez donc écrire comme ceci:
Je pense que vous êtes prêt à vous soucier de ce que sont ces trois personnages, alors vous avez perdu. Vous voulez juste supprimer les trois derniers, mais qui ils sont!
Si vous souhaitez supprimer certains caractères spécifiques, vous pouvez en ajouter des jugements:
la source
N'effectuez-vous pas les opérations dans le mauvais ordre? Votre exigence semble être
foo[:-3].replace(" ", "").upper()
la source
Cela dépend de votre définition des espaces. J'appellerais généralement les espaces comme des espaces, des tabulations, des sauts de ligne et des retours chariot. Si c'est votre définition, vous souhaitez utiliser une expression régulière avec \ s pour remplacer tous les caractères d'espacement:
la source