J'ai une liste:
sample = [["P001" ]]
Comment la convertir en:
sample = ["['P001']"]
J'ai essayé [[x] pour x in sample] mais la sortie est [["[P001[P001 "
Modifié: Je suis vraiment désolé pour le désagrément car j'ai commis une erreur dans la question que je pose. Le "P001" est en fait une chaîne. Désolé encore.
3 Réponses :
Si vous voulez que la sortie soit comme ceci [['P001']] , vous pouvez faire ceci:
>>> P001 = 'something' >>> sample = ["[P001]"] >>> [eval(sample[0])] [['something']]
Mais si vous voulez la sortie comme [[P001]] Je ne sais pas si c'est possible. P001 n'est pas un type python, et si P001 est une variable définie avant, la liste modifiée contiendra la valeur de P001 et non le nom lui-même . Par exemple:
>>> sample = ["[P001]"]
>>> [[sample[0].strip('[\]')]]
[['P001']]
Mais en fait, il veut cette sortie: sample = [[P001]]
Cela n'est pas valide, P001 n'est pas un mot-clé python. Et si P001 est une variable définie, alors la sortie ne serait pas `[[P001]]` ce sera [[value_of_P001]] . Je mettrai à jour la réponse avec l'exemple.
Désolé de me tromper en posant la question. La question a été modifiée.
Votre deuxième solution fonctionne dans cette tâche. Merci beaucoup!
Désolé que ce soit la première fois que je pose une question. Je ne peux toujours pas voter pour.
Ne vous inquiétez pas, pas de problème.
Ceci est un tableau de chaînes et chaque chaîne se compose d'un motif comme "[P001]". Vous devez faire une boucle sur le tableau externe et exécuter une correspondance avec chaque élément pour obtenir la valeur interne, dans ce cas «P001». Ensuite, vous pouvez ajouter la valeur comme vous le souhaitez.
s = ["[P001]", "[S002]"]
result = []
import re
for i in s:
r = re.match(r"\[(.*?)\]", i)
if r:
result.append([r.group(1)])
print(result)
[['P001'], ['S002']]
Cela peut être fait simplement en utilisant une expression régulière pour les caractères alphanumériques:
sample = ["[P001,P002]","[P003,P004]"]
import re
sample = [re.findall("\w+", sublist) for sublist in sample]
Est-ce que
P001est défini comme une variable, sinon voulez-vous vraiment ceci:[["P001"]]à la place?d'abord, vous pouvez convertir int en chaîne, puis à nouveau convertir en liste
P001 ne peut rester qu'une liste car il ne peut être rien d'autre