Problème pour supprimer les commentaires dans une liste

Foutriquet -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voici mon problème :

Je dois réussir à supprimer les commentaires commençant par des # dans ma liste de caractère. D'autre part, si la suppression des caractères créée une ligne vide, je dois supprimer la ligne. Exemple :
['M# MM', 'M'','#TEXT']] doit devenir [['M'], ['M']]
Quand il y a un #, je dois donc supprimer tout ce qu'il y a derrière jusqu'à la virgule.
Voici mon programme, je ne comprends vraiment pas comment supprimer tout ce qu'il y a derrière les # qui peuvent se situer n'importe où

def nettoyer_carte(carte):
    T=carte
    for i in range(len(T)):
        if "#" in T[i]:
            T[i]=T[i].replace(T[i:], "")
        if T[i]=="":
            T=T.remove(T[i])


python affiche : TypeError: replace() argument 1 must be str, not list


J'ai bien compris que ma ligne était fausse, mais je ne comprends vraiment pas comment faire.
Merci pour l'aide!
Configuration: Windows / Chrome 80.0.3987.149
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, peux-tu donner un exemple complet, qui permet de comprendre ce qu'est carte?
tout fonctionne parfaitement quand je fais:
k=["j1j5","jj"]
nettoyer_carte(k)
0
Foutriquet
 
Bonjour, oui, je suis entrain de créer un labyrinthe composé de Mur (M), d'un point d'arrivée (A), de départ (H), de mini-jeux sur le chemin( C) et de cases vide (espace).

Carte est un fichier txt que j'ai lu sous python et mis dans une liste. Voici a quoi ressemble la carte :

MMMMMMMMMM
MH MMMMM
MMMM MMMMM
MM MM MM
MM M MM
MM CMMM MM
MMMMMCM M
M M
MAMMM MMMM
MMMMMMMMMM

Avec ce programme, je la mets dans une liste :
def lire_carte(nomfichier):
lignes=""
chaine=open(nomfichier,"r").read()
lignes=chaine.split("\n")
return lignes
chaine.close()

En l'appliquant sur ma carte (qui correspond à mon labyrinthe j'obtiens ceci :
['MMMMMMMMMM', 'MH MMMMM', 'MMMM MMMMM', 'MM MM MM', 'MM M MM', 'MM CMMM MM', 'MMMMMCM M', 'M M', 'MAMMM MMMM', 'MMMMMMMMMM']

et à présent, voici la consigne que j'ai :

Créer une fonction nettoyer_carte(carte) qui prend en entrée un tableau 1D de chaînes de caractères représentant la carte et qui renvoie la carte nettoyée, selon ces règles :

Suppression des commentaires : tout ce qui suit le caractère # est supprimé (# inclus)
Toute ligne vide est supprimée (donc aussi celle qui sont devenues vides après suppression des commentaires)

Je dois donc pouvoir supprimer les éventuelles commentaires qui se sont glisser dans la "carte", exemple :

['MMMMMMM#MMM', 'MH MMMMM', 'MMMM# MMMMM', 'MM MM MM', 'MM M MM', 'MM CMMM MM', 'MMMMMCM M', 'M M', '#text', 'MAMMM MMMM', 'MMMMMMMMMM']

j'espère que j'ai été un peu plus clair...

Je suis donc bloqué sur le problème de suppression des commentaires dans la listes que j'ai créé.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Foutriquet
 
je ne sais pas ce que tu essaies de faire en écrivant
T[i]=T[i].replace(T[i:], "")

peut-être pourrais-tu donner un exemple?
en attendant, remplace cette ligne par
print(T[i:])
0
Foutriquet > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
J'essaye de, en gros, dès que la boucle repère un # dans la liste, il supprime tout ce qu'il y a derrière le # avec le # inclus jusqu'à la fin de la ligne

exemple :

['MM#MM', 'MM', 'M#text'] doit devenir : ['MM', 'MM', 'M'] (Les # ainsi que ce qu'il y a droite du # jusqu'à la virgule a été supprimé)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Foutriquet
 
as-tu essayé
print(T[i:])
?
0
Foutriquet > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
oui, print ne m'affiche rien quand je lance le programme. De plus, il ne rempace pas ce qui vient derrière le #
0