Je n'arrive pas a supprimer les espace et les saut de ligne (/n)

Résolu/Fermé
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022 - Modifié le 1 déc. 2020 à 10:36
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022 - 2 déc. 2020 à 14:07
Bonjour, j'ai fait un programme qui doit modifier un texte précis mais le problème je dois supprimer tout les espace et les lignes.


mais .replace ne fonctionne pas a cause de mon import OS.
Pouvez vous m'aider ? (ZRC a regarder)
"détails" = si demande de supprimer /n ou replace " " "" cela ne fonctionne pas.

import tkinter
from tkinter import *
from tkinter.filedialog import askopenfilename
import os

def sauvegarder():
        cherche_file = askopenfilename(initialdir=r"C:\Desktop", title="Ouvrir",
                                           filetypes=(("Text Files", "*.txt"),
                                                      ("Python Files", "*.py"),
                                                      ("all files", "*.*")))
        cherche_file = open(cherche_file, 'w')
        cherche_file.write(my_text.get(1.0, END))

def ZRC():
    mon_fichier = askopenfilename(initialdir=r"C:\Desktop", title="Ouvrir",
                                           filetypes=(("Text Files", "*.txt"),
                                                      ("Python Files", "*.py"),
                                                      ("all files", "*.*")))
    fi = open(mon_fichier, 'r')
    fo = open('tempo.txt','w')

    for lignes in fi:
        if('[ENTETE]' in lignes): lignes = lignes.replace('[ENTETE]', 'TI')
        if ("TYPE = LIVRAISON" in lignes): lignes = lignes.replace("TYPE = LIVRAISON", "Reception")
        if ("NO BDL =" in lignes): lignes = lignes.replace("NO BDL =", "Z")
        if ("DAT BDL" in lignes): lignes = lignes.replace("DAT BDL" , "ZRC")
        if("DAT LIV ="in lignes): lignes = lignes.replace("DAT LIV =", " ")
        if("[LIGNES]"in lignes): lignes = lignes.replace("[LIGNES]", "LI;ARTICLE")
        if("REF FOU"in lignes): lignes = lignes.replace("REF FOU", "BRA")
        if("QTE ="in lignes): lignes = lignes.replace("QTE =", " ")
        if("PA BRUT"in lignes): lignes = lignes.replace("PA BRUT", " ")
        if("REMISE"in lignes): lignes = lignes.replace("REMISE", " ")
        if("PV TTC"in lignes): lignes = lignes.replace("PV TTC", " ")
        if("TVA"in lignes): lignes = lignes.replace("TVA", " ")
        if("LIBELLE ="in lignes): lignes = lignes.replace("LIBELLE =", "A01D;")
        if("GENCOD = "in lignes): lignes = lignes.replace("GENCOD = ", "FAUX")
        print()
        fo.write(lignes)

    fi.close()
    fo.close()

    os.remove(mon_fichier)
    os.rename('tempo.txt', mon_fichier)
    file = open(mon_fichier, "r")
    lignes = file.readlines()
    lignes[2] = " "
    lignes[3] = " "
    lignes[6] = " "
    lignes[7] = " "
    lignes[8] = " "
    lignes[9] = " "
    lignes[10] = " "
    lignes[11] = " "
    lignes[12] = " "
    file = open(mon_fichier, "w")
    file.writelines(lignes)
    file.close()

window = tkinter.Tk()

window.title("Fred")
window.geometry("1080x720")
window.minsize(480, 360)
window.iconbitmap("fred.ico")
window.positionfrom("user")

label_welcome = tkinter.Label(window, text="Version 1.0", font=("Arial", 30))
label_welcome.pack()

#Exporter et importer

mainmenu = tkinter.Menu(window)

first_menu = tkinter.Menu(mainmenu, tearoff=0)
first_menu.add_command(label='Importer', command=cherche)

my_text = Text(window, width=40, height=30, font=("Helvetica", 16))
my_text.pack(pady=20)

first_menu.add_command(label='Sauvegarder', command=sauvegarder)
first_menu.add_command(label="Quitter", command=window.quit)

second_menu = tkinter.Menu(mainmenu, tearoff= 0)
second_menu.add_command(label="Information", command=show_about)
second_menu.add_command(label="Help", command=show_about1)

tree_menu = tkinter.Menu(mainmenu, tearoff=0)
tree_menu.add_command(label="ZRC", command=ZRC)

mainmenu.add_cascade(label="Fichier", menu=first_menu)
mainmenu.add_cascade(label="Autre", menu=second_menu)
mainmenu.add_cascade(label="Exporter", menu=tree_menu)
window.config(menu=mainmenu)

window.mainloop()
A voir également:

9 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 1 déc. 2020 à 10:11
Bonjour mister,

Il semble que tu n'as pas utilisé les balises de code Python pour afficher ton code

mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :

def test():
    print('test')

test()


Tu as un message d'erreur ?
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 10:19
Oui si je rajoute la commande replace
AttributeError: '_io.TextIOWrapper' object has no attribute 'replace'
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168 > mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
Modifié le 1 déc. 2020 à 10:28
tu as lu mon message de 10h17?

j'ai testé juste la partie de code ou tu fait
lignes = f.readlines()
lignes[2] = " "

ca me suprimme la 3eme ligne et ca ajoute un espace à la place
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022 > Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024
1 déc. 2020 à 10:45
Oui et c'est pour but de supprimé la ligne 3

car la ligne 1 est égal a [0] et oui j'ai lu ton message et j'ai reposter si dessous le codage python avec la couleur.
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 10:09
import tkinter
from tkinter import *
from tkinter.filedialog import askopenfilename
import os






def sauvegarder():
cherche_file = askopenfilename(initialdir=r"C:\Desktop", title="Ouvrir",
filetypes=(("Text Files", "*.txt"),
("Python Files", "*.py"),
("all files", "*.*")))
cherche_file = open(cherche_file, 'w')
cherche_file.write(my_text.get(1.0, END))

def ZRC():
mon_fichier = askopenfilename(initialdir=r"C:\Desktop", title="Ouvrir",
filetypes=(("Text Files", "*.txt"),
("Python Files", "*.py"),
("all files", "*.*")))
fi = open(mon_fichier, 'r')
fo = open('tempo.txt','w')

for lignes in fi:
if('[ENTETE]' in lignes): lignes = lignes.replace('[ENTETE]', 'TI')
if ("TYPE = LIVRAISON" in lignes): lignes = lignes.replace("TYPE = LIVRAISON", "Reception")
if ("NO BDL =" in lignes): lignes = lignes.replace("NO BDL =", "Z")
if ("DAT BDL" in lignes): lignes = lignes.replace("DAT BDL" , "ZRC")
if("DAT LIV ="in lignes): lignes = lignes.replace("DAT LIV =", " ")
if("[LIGNES]"in lignes): lignes = lignes.replace("[LIGNES]", "LI;ARTICLE")
if("REF FOU"in lignes): lignes = lignes.replace("REF FOU", "BRA")
if("QTE ="in lignes): lignes = lignes.replace("QTE =", " ")
if("PA BRUT"in lignes): lignes = lignes.replace("PA BRUT", " ")
if("REMISE"in lignes): lignes = lignes.replace("REMISE", " ")
if("PV TTC"in lignes): lignes = lignes.replace("PV TTC", " ")
if("TVA"in lignes): lignes = lignes.replace("TVA", " ")
if("LIBELLE ="in lignes): lignes = lignes.replace("LIBELLE =", "A01D;")
if("GENCOD = "in lignes): lignes = lignes.replace("GENCOD = ", "FAUX")
print()
fo.write(lignes)

fi.close()
fo.close()

os.remove(mon_fichier)
os.rename('tempo.txt', mon_fichier)
file = open(mon_fichier, "r")
lignes = file.readlines()
lignes[2] = " "
lignes[3] = " "
lignes[6] = " "
lignes[7] = " "
lignes[8] = " "
lignes[9] = " "
lignes[10] = " "
lignes[11] = " "
lignes[12] = " "
file = open(mon_fichier, "w")
file.writelines(lignes)
file.close()

window = tkinter.Tk()

window.title("Fred")
window.geometry("1080x720")
window.minsize(480, 360)
window.iconbitmap("fred.ico")
window.positionfrom("user")

label_welcome = tkinter.Label(window, text="Version 1.0", font=("Arial", 30))
label_welcome.pack()

#Exporter et importer

mainmenu = tkinter.Menu(window)

first_menu = tkinter.Menu(mainmenu, tearoff=0)
first_menu.add_command(label='Importer', command=cherche)

my_text = Text(window, width=40, height=30, font=("Helvetica", 16))
my_text.pack(pady=20)

first_menu.add_command(label='Sauvegarder', command=sauvegarder)
first_menu.add_command(label="Quitter", command=window.quit)

second_menu = tkinter.Menu(mainmenu, tearoff= 0)
second_menu.add_command(label="Information", command=show_about)
second_menu.add_command(label="Help", command=show_about1)

tree_menu = tkinter.Menu(mainmenu, tearoff=0)
tree_menu.add_command(label="ZRC", command=ZRC)

mainmenu.add_cascade(label="Fichier", menu=first_menu)
mainmenu.add_cascade(label="Autre", menu=second_menu)
mainmenu.add_cascade(label="Exporter", menu=tree_menu)
window.config(menu=mainmenu)

window.mainloop()
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
1 déc. 2020 à 10:17
Ca ressemble à : Commande .replace + supprimer une ligne ne fonctionne pas

C'est bien mais il n'y a plus les indentations

Dans ZRC, tu ouvres mon_fichier, tu lis toutes les lignes, tu modifie, tu réouvre mon_fichier en

écriture sans l'avoir fermé, bizarre

A quel endroit supprimes-tu les \n ?
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 10:46
A tout les lignes je veut les supprimer comme les espace exemple :

entete
5454
blabla kgkerndngv

Je veut que sa devient sa :

entete5454blablakgkerndngb
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
1 déc. 2020 à 10:22
tu as lu mon dernier message de 10h17 ou pas ?
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 10:47
oui désolé pour l'attente je regarde d'autre forum pour essayer de trouver la réponse
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 1 déc. 2020 à 11:01
C'est marrant, dans ton autre appel Commande .replace + supprimer une ligne ne

fonctionne pas
je t'avais expliqué comment supprimer proprement des lignes, avec la

méthode du fichier temporaire (comme tu le fait déjà juste au dessus avec tes replace)

tu as reposté le code avec les couleurs mais il n'y a plus les indentations ...

Sinon, pour supprimer des saut de lignes, je ne le vois pas dans ton code, peux-tu montrer ca

que tu fais ?

Si tu regarde sur un autre forum, préviens nous, que l'on ne perde plus de temps ici
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 11:17
Merci de votre réponse rapide j'ai rajouter ce cis dans mon ZRC

if(" "in lignes): lignes = lignes.replace(" ", "")
if("\n"in lignes): lignes = lignes.replace("\n", "")


Merci de pas être agressif s'il vous plait j'ai le droit de regarder des codes sur d'autre forum ce qui me permet m’améliore surtout je code mais je fait aussi des chose personnelle a coter mais bref...

Quand je rajoute cette ligne cela me crée pleins de problème dans mon texte cela annule pratiquement toute mes modification et ne supprime pas les espace ni les ligne sans explication.

J'ai essaye .replace mais cela ne fonctionne pas
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 11:24
Si je n'est pas pris votre code par rapport a supprimer des lignes c'est tout simplement car j'y arrivais pas a l'utiliser et que ma méthode fonctionnait et que je la préférait mais actuellement je veut pas supprimes des lignes mais les espace pour regrouper tout les mot sur une ou plusieurs lignes
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
1 déc. 2020 à 12:06
je ne suis pas agressif, je te dis ça pour ne pas que l'on perde notre temps le uns et les autres

:-) :-)

Tu es d'accord avec moi que dans un simple fichier ascii les lignes se terminent par un

caractère de saut de ligne, le fameux \n

Exemple:

la ligne 1 du fichier\n
la ligne 2 du fichier\n
etc .........

donc il suffit, après avoir lu une ligne, de supprimer le dernier caractère

exemple:
f = open(un_fichier,'r')
for ligne in f:
    ligne = ligne[:-1]  #on prend ligne du début jusqu'à un caractère en moins à partir de la fin
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 14:11
Votre code ne fonctionne pas personnellement ^^".

surtout que je comprend que la vous souhaiter retirer la ligne 2 ... se n'est pas se que je cherche je cherche a supprimer les espace et les saut de ligne. je vais vous donner mon texte que je dois convertir ^^ je dois les mettre tous sur une ligne ^^ ( sa sera plus simple)

[ENTETE]
TYPE = LIVRAISON
CL CDE = 13915
CL LIV = 13915
NO BDL = 1488116
DAT BDL = 31082020
EMAIL = edi@rochetgroup.fr
NO CDE = SW_025
DEVISE = EUR
QTE TOT = 000006
PA TOT = 000000051.08
NBLIG = 006
CONTRM = 
DAT LIV = 31082020
[LIGNE]
REF FOU = 5020413
QTE = 001
PA BRUT = 0010.4
REMISE = 0002.6
PA NET = 007.80
PV TTC = 000024
TVA = 20
LIBELLE = Buffle BUFFALO Beige 14/12mm Mat
GENCOD = 3601510149332
[LIGNE]
REF FOU = 5190402
QTE = 001
PA BRUT = 0010.4
REMISE = 0002.6
PA NET = 007.80
PV TTC = 000024
TVA = 20
LIBELLE = Veau Grain Alligator YAOUNDE Blanc 14/12mm Brillant
GENCOD = 3601510068886
[LIGNE]
REF FOU = 5411606ST
QTE = 001
PA BRUT = 0010.4
REMISE = 0002.6
PA NET = 007.80
PV TTC = 000024
TVA = 20
LIBELLE = Vachette MIAMI Marine 16/14mm Mat
GENCOD = 3601510275789
[LIGNE]
REF FOU = 3011612XS
QTE = 001
PA BRUT = 0012.6
REMISE = 003.15
PA NET = 009.45
PV TTC = 000029
TVA = 20
LIBELLE = Vachette NEW YORK Bleu 16/14mm Mat
GENCOD = 3601510240725
[LIGNE]
REF FOU = 3011605XS
QTE = 001
PA BRUT = 0012.6
REMISE = 003.15
PA NET = 009.45
PV TTC = 000029
TVA = 20
LIBELLE = Vachette NEW YORK Rouge 16/14mm Mat
GENCOD = 3601510240695
[LIGNE]
REF FOU = 7230661
QTE = 001
PA BRUT = 0011.7
REMISE = 002.92
PA NET = 008.78
PV TTC = 000027
TVA = 20
LIBELLE = Veau NEPTUNE Noir 18/16mm Mat Etanche
GENCOD = 3601510206950
[FIN]
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 1 déc. 2020 à 17:12
Votre code ne fonctionne pas personnellement ^^".

Bien sur, tel quel ce n'est pas suffisant, il manque des choses, je voulais juste te montrer comment on supprime le dernier caractère d'une ligne lue dans un fichier

Chez moi, ça fonctionne car je fais comme pour le remplacement de texte

ouverture mon_fichier en lecture
ouverture temp.txt en écriture
lecture d'une ligne, suppression du dernier caractère (ligne = ligne[:-1]), donc du \n
supression des espaces (" ")
écriture de la ligne (donc sans le \n et sans espaces) dans temp.txt
fermeture des 2 fichiers et renommage de temp.txt

mon fichier de test est comme ceci avant traitement:
ligne 1
ligne 2
ligne3


et après traitement, il est comme ceci:
ligne1ligne2ligne3

C'est bien ce que l'on veut, non ?

surtout que je comprend que la vous souhaiter retirer la ligne 2

Quelle ligne 2 ?
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
1 déc. 2020 à 17:21
Es ce que vous pouvez me montrer votre code alors au complet car actuellement vous me mettez l'amoitié et je vais pas vous mentir je suis complètement perdue de se que vous essayer de me faire

Ligne 2 je parlais de sa : ligne = ligne[:-1] je croyais que vous essaye de m'expliquer de supprimé cette ligne mais na juste un manque de compréhension
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 1 déc. 2020 à 17:38
C'est bien parce que c'est toi :-)
def supprimer_sauts_lignes_et_espaces():
    ''' Supprime les sauts de lignes et les espaces '''

    global mon_fichier

    fi = open(mon_fichier, 'r')
    fo = open('tempo.txt','w')

    for ligne in fi:
        ligne = ligne[:-1]
        ligne = ligne.replace(' ','')
        fo.write(ligne)

    fi.close()
    fo.close()

    os.remove(mon_fichier)
    os.rename('tempo.txt', mon_fichier)

supprimer_sauts_lignes_et_espaces()
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
2 déc. 2020 à 13:15
Bonjour mister,

Alors as-tu de la réussite ?
0
mister431 Messages postés 56 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 24 juin 2022
2 déc. 2020 à 14:07
Bonjour, merci pour votre codage oui après plusieurs réflexion et essaye avec votre codage cela fonctionne parfaitement je vous remercie.
0