0
votes

Une fonction "rejoindre" et "Split" doit montrer mot [5: 6] et [10]

J'ai la jointure suivante dans mon code xxx

mais je veux aussi imprimer Word [16], j'ai essayé "et" + ", etc., etc., mais pas de chance J'espère que quelqu'un peut m'aider: -)


8 commentaires

S'il vous plaît ajouter un exemple. Quelle est la valeur de s et que voulez-vous imprimer?


Que voulez-vous dire par mot [16] ? Comment + ne fonctionne pas, avez-vous utilisé ou s.split () [10:14] + [S.Split () [16]] ?


Je suppose que OP veut les 5ème, 6ème et 10ème mot d'une chaîne. Le moyen le plus simple de le faire est via une variable intermédiaire; Vous ne pouvez pas le faire avec et ou + .


En effet, veulent imprimer les mots 10, 11, 12, 13 et 14ème de la chaîne, et le 16e mot. Essayé à la fois s.split () [10:14] + [16] et S.Split () [10:14] + [S.Split () [16]]


@Metroll en fait, ce dernier bit s.split () [10:14] + [S.Split () [16]] aurait dû travailler. Avez-vous eu une erreur?


BTW, [10:14] est pas vous donner "les mots 10, 11, 12, 13 et 14th", mais juste les 10ème, 11ème, 12ème et 13ème mot .


@tobias_k Eh bien, pour le mettre plus précisément, [10:14] vous donne les 11ème, 12ème, 13ème et 14ème mot, plutôt que les 10ème, 11ème, 12ème et 13ème mot.


@blhsing Eh bien, si vous considère l'élément à l'index 0 au premier et non au Zeroth, puis oui, mais qui fait? :-P


3 Réponses :


1
votes

Voici une façon de le faire:

>>> s = 'But i also want to print word [16], i have tried "and", "+" etc. but no luck Hope somebody can help me :-)'
>>> a = s.split()
>>> print(' '.join([*a[10:14],a[16]]))
tried "and", "+" etc. luck


0 commentaires

0
votes

vous pouvez le faire en rejoignant les deux chaînes après les extraire individuellement. strong>

String String: P>

Out[19]: '11 12 13 14 16


8 commentaires

Parfait! :-) comme je le veux


''. Joindre (s


@blhsing, merci d'avoir pointé que sortit .. avez mis à jour ma réponse à réfléchir, a également ajouté l'espace pour rejoindre. Cependant, je suppose que @metroll n'avait besoin que d'un indice et il a compris comment la modifier pour obtenir ce dont il a besoin.


@Parvbanks Ceci donne toujours un résultat erroné, comme '' .join (s.split () [15]) traiterait la chaîne s.split () [15] En tant que séquence de caractères, vous vous retrouveriez donc avec chaque caractère du 16ème mot séparé par un espace. De plus, avec cette approche, il n'y aura pas d'espace entre le 14e mot et le 16e mot.


@blhsing, je ne pense pas si ... si s est une chaîne de mots séparés par un espace, s.split () le scindera en mots individuels et non caractères et s.split () [15] retournera le 16ème mot et non le 16e caractère dans s


@Parvbanks Veuillez exécuter la démonstration pour voir le problème: repl.it/repls/bleakmotherlyAddin


@Parvbanks the joindre méthode dans votre code révisé, ''. Joindre (s.split () [15]) est entièrement redondant, car vous divisez essentiellement la String dans des caractères individuels et ensuite les rejoindre dans la même chaîne. s.split () [15] aurait été suffisant.


Oui, j'ai remarqué que ... j'ai fait la correction .. merci :)



1
votes

Vous pouvez utiliser plusieurs objets tranche code> avec l'opérateur code> méthode code> et utilisez itheroTools.chain.from_iterable code> pour rejoindre les tranches, donc que vous n'auriez pas besoin de diviser deux fois la même chaîne ou de stocker le résultat de la division dans une variable temporaire:

from operator import itemgetter
from itertools import chain
print(' '.join(chain.from_iterable(itemgetter(slice(10, 15), slice(16, 17))(s.split()))))


1 commentaires

Ou ceci: (lambda x: x [10:14] + [x [16]]) (S.Split ()) : D