2010-07-01 5 views
2

Comment dois-je de prendre une chaîne:substitution de chaîne ou d'une liste en Python

("h1", "h2", "h3, "h4") 

Et en substituant ces valeurs avec des numéros 1, 2, 3, 4?

En conséquence, comment je voudrais préformer la même opération mais sur une liste à la place?

+2

parlez-vous une Chaîne '" (\ "h1", \ "h2 \", \ "h3 \", \ "h4 \") "' '? Ou une liste de chaînes? –

+1

Je ne suis pas exactement sûr de ce que vous demandez ici ... Cherchez-vous simplement à supprimer le «h» de vos cordes? Ou avez-vous une longue chaîne et devez-vous remplacer toutes les instances de 'h1' par '1'? – MikeD

Répondre

4
to_replace = ["h1","h2","h3","h4"] 
replaced = [ int(s.replace("h","")) for s in to_replace ] 

Si c'est ce que vous voulez.

Ce n'est pas tout à fait clair; Je suppose que votre entrée n'est pas littéralement une chaîne "(\"h1\", \"h2\", \"h3\", \"h4\")", mais une liste de chaînes. Et je ne suis pas sûr de savoir ce que vous vouliez dire par votre deuxième question, car elle semble être la même que la première.

Je vais mettre à jour ma réponse en conséquence =)

+0

Pour MikeD: Oui, c'est ce que je veux faire. Pour donner un peu de contexte, j'essaye de traduire le code R en Python et ce que j'essaye de faire est de construire un tableau multi-dimensionnel sur 3 chaînes/listes/tout ce qui contient 4 éléments par chaîne/liste. Je suppose d'abord, quoi de mieux à utiliser pour construire un tableau: une liste ou une chaîne? Vous devrez pardonner mes descriptions cryptiques, car je suis un n00b avec Python. :) – myClone

+0

Pour Justin: Je m'excuse pour ma question peu claire. C'est en partie parce que je ne suis pas sûr de ce que je suis après. J'ai un script R que j'essaie de traduire. (Je sais qu'il y a rPy pour gérer ce truc automagiquement, mais j'essaie d'apprendre Python par traduction). Ce que vous avez offert semble proche. Dans R il se lit comme suit: hClasses <- as.numeric (gsub ("h", "", segmentsH)). J'ai essayé ce que vous aviez mais je l'ai écrit de cette façon: segmentsH = ["h1", "h2", "h3", "h4"]
hClasses = [int (s.replace ("h", "")) pour s en segmentsH] .Travaillé parfaitement. Merci beaucoup! – myClone

2

Ceci dépouiller tous les caractères non-numérique (non seulement h):

>>> s = ["h1", "h2" , "h3" , "h4"] 
>>> [int(filter(lambda c: c.isdigit(), x)) for x in s] 
[1, 2, 3, 4] 

ou

>>> s = ["x1", "b2" , "c3" , "h4"] 
>>> [int(filter(lambda c: c.isdigit(), x)) for x in s] 
[1, 2, 3, 4] 
+0

ChristopeD: Merci pour cette solution alternative. Cela peut être utile plus tard dans mon script. :) Apprécier ton aide. – myClone

Questions connexes