J'ai les deux strings Je veux renvoyer une nouvelle chaîne code> code>, qui concaténate le sortie doit être une liste J'ai la méthode suivante, que ne fonctionne pas.
Les entrées sur la méthode sont les deux chaînes. P> suivants code>: 1.3 .45.3.6 code> de demande code> avec 2 code> de Répondre code> pour renvoyer une liste code> qui contient le chaîne code>. p> code>: p> def concatentatestring(request, response):
oidStatusValueList = [f"{i.split('/')[2]}.{j.split('/')[2]}" \
for i in request for j in response \
if (i.split('/')[1] == j.split('/')[1]) ]
4 Réponses :
Ajout de deux chaînes peut être effectuée avec l'opérateur Vous pouvez diviser une chaîne avec le < Code> Split code> Méthode comme vous l'avez utilisé, puis si le format de la demande et que la réponse sera toujours la même, vous savez obtenir l'élément 2 de la demande fractionnée et l'élément de la réponse divisée p> + code> ou à l'aide d'une fûte F (je ne crois pas beaucoup si une différence de performance)
N'utilisez pas une compréhension de la liste car vous n'êtes pas itération sur la demande et la réponse de sorte que votre Concatentientasetruction code> fonctionnerait p> >>> def concatentatestring(request, response):
... return [f"{request.split('/')[2]}.{response.split('/')[1]}"]
...
>>>
>>> concatentatestring(request, reply)
['1.3.45.3.6.2']
Vous êtes itérant à travers chaque lettre des cordes dans les boucles de la part des boucles que vous avez écrites.
Je pense que cela peut faire ce que vous demandez: p>
request= "1/1/1.3.45.3.6/3/4"
reply= "1/2/3"
def concatentatestring(request, response):
request_splited=request.split('/') # =["1","1","1.3.45.3.6","3","4"]
response_splited=response.split('/') # =["1","2","3"]
if request_splited[1] == response_splited[1]:
return [f'{request_splited[2]}.{response_splited[1]}']
else:
...
Par exemple, j'ai également besoin de vérifier si le deuxième index de la chaîne de demande et de réponse est égal avant de les concaténer ensemble. Comment ferais-je cela?
Et s'ils ne sont pas égaux? J'ai édité la réponse à vérifier que, sans cas pour s'ils ne sont pas égaux
Votre code ne le faisait pas tout à fait car vous aviez besoin de correctement itération à travers les cordes. Vous devez également les diviser avant la compréhension de la liste. Pour utiliser à la fois l'index et la valeur à cet index, vous pouvez utiliser C'est ce que vous recherchez: p> Votre sortie attendue est également incorrecte en considérant ce que vous entrez et de vos critères pour rejoindre les chaînes. Ce code donne: p> énumérer code> et, enfin, vous devez vérifier que vous n'avez pas atteint la fin des cordes ou que cela pourrait entraîner des erreurs.
Mis à jour le code dans la question. C'était une faute de frappe.
Pas de problème, mais comme vous êtes toujours assuré une liste d'éléments unique (si je lis cela correctement), pourquoi la déranger de la faire une liste?
Imprimer (F "{Demande.Split ('/') [2]}. {Response.split ('/') [1]}") code> donne votre sortie souhaitée, pas besoin de itérer.Comment décidez-vous quelles parties des chaînes doivent être fusionnées?
Je veux utiliser une liste
@LAURASHIP voir ma réponse.