Quelle est la façon la plus simple de swap de caractère dans une chaîne avec Python?
Je veux swap chaque paire de caractères dans une chaîne. '2143'
devient '1234'
, 'badcfe'
devient 'abcdef'
.
Comment puis-je le faire en Python?
Srsly, pas encore.
Au moins le q est clair maintenant. Bien qu'il serait plus clair si la chaîne d'origine était "foobar" et le résultat "ofbora' - il a toujours l'air comme le tri, mais maintenant nous savons que c'est faux!
Bas voté pour reposter la même question. soupir
double possible de Quelle est la façon la plus simple de swap de caractère dans une chaîne de caractères en Python?, je l'ai rangé et a voté pour le rouvrir. Veuillez les autres peuvent le faire aussi voter pour rouvrir la question et fermer cela comme une dupe.
donner le newb une pause....
Au moins le q est clair maintenant. Bien qu'il serait plus clair si la chaîne d'origine était "foobar" et le résultat "ofbora' - il a toujours l'air comme le tri, mais maintenant nous savons que c'est faux!
Bas voté pour reposter la même question. soupir
double possible de Quelle est la façon la plus simple de swap de caractère dans une chaîne de caractères en Python?, je l'ai rangé et a voté pour le rouvrir. Veuillez les autres peuvent le faire aussi voter pour rouvrir la question et fermer cela comme une dupe.
donner le newb une pause....
OriginalL'auteur cocobear | 2011-01-05
Vous devez vous connecter pour publier un commentaire.
oneliner:
OriginalL'auteur Paulo Scardine
La façon habituelle de swap pour les éléments en Python est:
Donc, il me semble que vous venez de faire la même chose avec une tranche étendue. C'est un peu compliqué parce que les chaînes ne sont pas mutables, donc vous devez le convertir en une liste et ensuite revenir à une chaîne de caractères, mais ce que je voudrais faire c'est:
Unfortuntely, de ne pas travailler sur des chaînes de longueur.
Paulo ou Fabian, que voudriez-vous pour la saisie de données incorrectes en dehors de lancer une exception?
bon point. Peut-être jeter un informative exception 🙂
OriginalL'auteur Duncan
Voici une façon...
s = '2143' pas '2134' vous avez utilisé undefined var c
Que seuls les swaps sur le premier caractère, et puis si vous voulez échanger tout ce que vous avez à se fendre et à se joindre à la chaîne pour len(s)/à 2 reprises.
Je sais, mais ce n'était pas très clair ce qu'il voulait.
OriginalL'auteur FogleBird
ou
ou si la chaîne peut avoir une longueur impaire:
Notez que cela ne fonctionne pas avec les anciennes versions de Python (si je ne suis pas confondre âgés de plus de 2.5).
L'indice de référence a été exécuté sur python 2.7-8.fc14.1.x86_64 et un Core 2 Duo 6400 CPU avec
s='0123456789'*4
.IndexError: string index out of range
, la deuxième côtelettes dernier char.et qu'est-ce que l'OP exigences de l'impair de la longueur des chaînes?
Scardine: vous avez raison, mais la question n'était pas assez précis.
longueur arbitraire implicite car il n'y a pas d'exigence pour la même longueur
L'OP parle d'une "paire" de caractère, et les exemples ne couvrent pas d'impair chaînes de longueur, il est donc implicite de tous les droits que seuls les même chaînes de longueur, sont à considérer.
OriginalL'auteur Cristian Ciupitu
Si l'exécution ou l'élégance n'est pas un problème, et vous voulez juste de la clarté, et avoir le travail fait alors simplement utiliser ce:
Cela vous permet de swap, ou simplement remplacer des caractères ou de sous-chaîne.
Par exemple, pour swap 'ab' <-> " de " dans un texte:
OriginalL'auteur john doe
Il n'est pas nécessaire de faire une liste. Les travaux suivants pour la même longueur de cordes:
OriginalL'auteur cayhorstmann
En boucle sur la longueur de la chaîne par deux et swap:
:
et échoue sur les chaînes de longueur avec un IndexError exception.
OriginalL'auteur Spacedman
Voulez-vous que les chiffres sont triés? Ou êtes-vous à la permutation de pair/impair indexé chiffres? Votre exemple est totalement flou.
Tri:
s est maintenant '1234'. Le truc, c'est ici que la liste de caractères(string), il tombe en personnages.
''.join(sorted(s))
et aussi clair.désolé pour ça. Je veux permutation tous les deux de caractère dans la chaîne.
J'oublie toujours triés(x) ! Thx.
OriginalL'auteur Spacedman
Comme suit:
OriginalL'auteur Lennart Regebro
Cependant re est un peu lent.
OriginalL'auteur Kabie
D'une façon de plus:
OriginalL'auteur dansalmo
OriginalL'auteur JohnMudd
OriginalL'auteur kevin
OriginalL'auteur DrSanjay Bhakkad
OriginalL'auteur user49505