-2
votes

Remplacez la chaîne en dernière occurrence en utilisant Python

J'ai besoin de remplacer la chaîne dans la dernière occurrence après avoir fractionné la chaîne

J'ai essayé la manière ci-dessous, mais elle donne une sortie incorrecte comme 1.120

ci-dessous est le code que j'ai essayé. xxx

la sortie que je reçois comme 1.120-test . Mais ici, j'ai besoin de la sortie comme 1.20-test


1 commentaires

Peut-être que vous pourriez poster quelques autres exemples d'entrée et de sortie souhaitée afin de donner une idée plus claire de ce que vous essayez de faire.


3 Réponses :


0
votes

Selon ma compréhension, vous avez besoin de quelque chose comme ceci:

y = "1-19"

str1 = ''
if '-' in y:
    splt = y.split('-')
    str1 = "%s-%s"%(splt[0], int(splt[-1])+1)
else:
    splt = y.split('.')
    str1 = "%s.%s"%(splt[0], int(splt[-1])+1)
print str1


2 commentaires

Cela ne fonctionne pas si nous avons y = "1.19-test" . Donner une erreur ValueError: littéral non valide pour int () avec base 10: 'Test' . La sortie dont j'ai besoin est 1.20-test


Puis modifier le code ci-dessus pour gérer - et cela fonctionnera



0
votes

trop compliqué. Stockez simplement la sortie de la division, apportez vos modifications et utilisez .join code> méthode pour récupérer la chaîne souhaitée. EDIT STRAND> en fonction de la question mise à jour, vous devez également gérer des caractères supplémentaires au préalable. En supposant que vous voulez seulement incrémenter la partie après un . Code> Vous pouvez simplement garder une trace des caractères supplémentaires dans une variable restes code>, avant d'appliquer la logique de fractionnement.

y = "1.19-test"
leftover = ''
if '-' in y:
    temp_y, leftover = y[:y.index('-')], y[y.index('-'):]
else:
    temp_y = y

split_list = temp_y.split('.')
split_list[-1] = str(int(split_list[-1]) + 1) #convert last value to int, add 1, convert result back to string.
result = '.'.join(split_list) #joins all items in the list using "."
result += leftover #add back any leftovers
print(result)
#Output:
1.20-test


5 commentaires

Cela ne fonctionne pas si nous avons y = "1.19-test" . Donner une erreur ValueError: littéral non valide pour int () avec base 10: 'Test' . La sortie dont j'ai besoin est 1.20-test


Je n'aurais pas attendu que cela fonctionne avec une contribution comme celle de toute façon. Vous voudrez peut-être modifier votre question ou poser un nouveau. "Besoin de remplacer la chaîne dans la dernière occurrence après avoir fractionné la chaîne" bien, ce qui n'est clairement pas la dernière occurrence avec une entrée comme celle-là. Cette entrée doit être ajoutée en question.


Mise à jour de la question .. S'il vous plaît aidez-moi à ce sujet


@moong D'accord, a mis à jour ma réponse.


Ça a fonctionné ... merci@parithosh singh



0
votes

Le code ci-dessous a fonctionné, j'ai pris la référence du code @paritosh Singh. XXX


0 commentaires