J'ai une liste dans laquelle j'ajoute des éléments comme celui-ci:
Paris
Amsterdam
New York City
L.A
donc listA ressemble à ceci:
for i in listA:
listB.append(i - str(code)) #that's what i want to do. The code is not good
Je voudrais , maintenant à partir de cette listeA, pour ajouter des éléments à une liste "listB", sans le code. Je voudrais faire ceci:
Paris 75 Amsterdam 120 New York City 444 L.A 845
et je veux que la listB ressemble à ceci:
listA.append('{:<30s} {:>10s}'.format(element, str(code)))
et en utilisant uniquement listA et sans avoir accès à 'element' et 'code'
Quelqu'un peut-il m'aider?
6 Réponses :
Vous pouvez utiliser l'expression régulière pour cela
import re
for i in listA:
listB.append(re.sub(r"\W+\d+", "", i))
Cela supprimera le code qui est des nombres et les espaces avant.
Essayez ceci:
['Paris', 'Amsterdam', 'New York City', 'L.A']
Résultat:
import re
listB = [re.sub('\d+', '', x).strip() for x in listA]
print(listB)
Cela semble fonctionner pour moi
listB=[]
for i in listA:
listB.append(listA[0][:len(element)])
print(listB)
Que diriez-vous d'utiliser re.sub ? Et au lieu d'utiliser for in , il serait préférable de map style fonctionnel ou [for in] compréhension de liste:
import re listB = [re.sub(r"\s+\d+", "", x) for x in listA]
re.sub - est une fonction qui recherche et supprime toutes les occurrences du premier argument au deuxième au troisième r "\ s + \ d +" - est un Chaîne littérale 'brute' avec regex à l'intérieur \ s + - un ou plusieurs espaces ( \ t \ n \ r etc) \ d + - un ou plusieurs chiffres ( \ d est un allias pour [0-9] ) Le moyen le plus simple sans aucune nouvelle bibliothèque.
Vous pouvez créer une variable avec 40 espaces (à cause de 40 espaces dans la clause de format). par exemple: space_var = ""
Ensuite, utilisez le code suivant pour extraire l'élément de listA:
listB=[]
for i in listA:
listB.append(listA[0].rsplit(space_var,1)[0])
Vous pouvez essayer ce qui suit:
listB = [element.rsplit(' ', maxsplit=1)[0].rstrip() for element in listA]
rsplit ('', maxsplit = 1) signifie que vous diviserez l'élément de listA une fois au premier espace du côté droit. rstrip () supplémentaire supprimera les autres espaces du côté droit.
Je n'ai pas tout à fait compris, besoin de clarification
Vous n'utilisez pas du tout
idans la deuxième boucle. D'où viennent l 'élémentet lecode?Il semble que vous cherchiez probablement ceci: Comment supprimer des sous-chaînes spécifiques ... en Python
Je ne suis pas sûr de bien vous comprendre, mais pourquoi ne construisez-vous pas listB juste après avoir construit listA, quelque chose comme - listB.append (élément)?
@MilanCermak je change de message
@IftahP parce que ce n'est qu'un exemple. dans mon projet, je n'ai plus accès à «élément» et «code». J'ai juste accès à la liste A déjà faite