Non pas ça je crois que je me suis mal exprimé, il ne faut pas rajouter de ligne, juste remplacer les lignes déjà existantes (commune entre les 2 fichiers si je puis dire)
Et que si des lignes sont en plus (non commun entre les 2), ne pas les prendre en compte (ça je pourrais le faire manuellement)
Merci de ton aide
Edit :
Apres :
Je ne peux pas faire un simple copier-coller vu que ça n'a pas la même structure et c'est sensible à la casse
def open_file(filename):
res = {}
with open(filename) as file:
for line in file.readlines():
num, val = line.split(" ", 1)
res[num] = val
return res
file1 = open_file("fichier1.txt")
file2 = open_file("fichier2.txt")
with open("out.txt", "w") as f:
for key in sorted(file1.keys()):
value = file2.get(key) or file1[key]
f.write(key + " " + value)
- Edité par thelinekioubeur 22 mars 2019 à 15:43:36
Ton problème est incompréhensible et @thelinekioubeur s'évertue à essayer de comprendre ce que tu souhaites faire.
Il aurait été tellement plus simple (plutôt que tes screens illisibles) de reprendre ton 1er exemple, et d'y ajouter la sortie attendue.
J'ai 2 fichiers .txt et je cherche un script pour comparer et remplacer les 2 fichiers
Ça ne veut rien dire et les détails manquent !
Je souhaite prendre toutes les lignes du fichier 2 en remplacent les lignes du fichier 1 et qui ignore les lignes qui n'existe pas/différente
Toujours pas compris... et ne veut toujours rien dire, sauf pour toi peut-être.
À la vue de tes difficultés à t'exprimer sur le problème, je pense que tu as de gros problèmes à connaître la solution algorithmique qui résoudra ton problème.
P.S Tu as de la chance qu'une personne se penche sur un sujet si mal exprimé...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je cherche à traduire 1 fichiers textes pour un jeu (listes d'objets) et le traduire, un texte qui est traduis en turque et l'autre en français avec une structure différente (certaines lignes sont manquante entre les 2 donc des décalages):
Chaque objet correspond à un nombre prédéfini, et je cherche un script pour faire un remplacement pour chaque valeur (début de ligne) par le texte du fichier texte français
import os
SIZE = 1024 * 1024
WORDS = [None for _ in range(SIZE)]
def readFile(path):
if not os.path.exists(path):
raise OSError('file does not exist, bad path -> {}'\
.format(path)
)
with open(path, 'r') as f:
for line in f:
n, word = line.split()
value = WORDS[n]
if not value:
WORDS[n] = word
f1 = readFile('francais.txt')
f2 = readFile('turc.txt')
with open('result.txt', 'w') as f3:
for n, word in enumerate(WORDS):
if word:
f3.write('{}\t{}\n'.format(n, word))
- Edité par fred1599 22 mars 2019 à 18:42:01
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
import os
SIZE = 1024 * 1024
WORDS = [None for _ in range(SIZE)]
def readFile(path):
if not os.path.exists(path):
raise OSError('file does not exist, bad path -> {}'\
.format(path)
)
with open(path, 'r') as f:
for line in f:
n, word = line.split()
n = int(n)
value = WORDS[n]
if not value:
WORDS[n] = word
f1 = readFile('francais.txt')
f2 = readFile('turc.txt')
with open('result.txt', 'w') as f3:
for n, word in enumerate(WORDS):
if word:
f3.write('{}\t{}\n'.format(n, word))
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Eh bien c'est pas compliqué, le format que tu m'as donné n'est pas bon, c'est à dire pas de la forme
entier chaîne
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
import os
SIZE = 1024 * 1024
WORDS = [None for _ in range(SIZE)]
def readFile(path):
if not os.path.exists(path):
raise OSError('file does not exist, bad path -> {}'\
.format(path)
)
with open(path, 'r') as f:
for line in f:
n, word = line.split()
try:
n = int(n)
value = WORDS[n]
if not value:
WORDS[n] = word
except ValueError:
print('error format line: {}'.format(line))
f1 = readFile('francais.txt')
f2 = readFile('turc.txt')
with open('result.txt', 'w') as f3:
for n, word in enumerate(WORDS):
if word:
f3.write('{}\t{}\n'.format(n, word))
On va voir ça !
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
import os
SIZE = 1024 * 1024
WORDS = [None for _ in range(SIZE)]
def readFile(path):
if not os.path.exists(path):
raise OSError('file does not exist, bad path -> {}'\
.format(path)
)
with open(path, 'r') as f:
for line in f:
n, word, *_ = line.split()
try:
n = int(n)
value = WORDS[n]
if not value:
WORDS[n] = word
except ValueError:
print('error format line: {}'.format(line))
f1 = readFile('francais.txt')
f2 = readFile('turc.txt')
with open('result.txt', 'w') as f3:
for n, word in enumerate(WORDS):
if word:
f3.write('{}\t{}\n'.format(n, word))
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
import os
SIZE = 1024 * 1024
WORDS = [None for _ in range(SIZE)]
def readFile(path):
if not os.path.exists(path):
raise OSError('file does not exist, bad path -> {}'\
.format(path)
)
with open(path, 'r') as f:
for line in f:
if line:
n, word, *_ = line.split()
try:
n = int(n)
value = WORDS[n]
if not value:
WORDS[n] = word
except ValueError:
print('error format line: {}'.format(line))
f1 = readFile('francais.txt')
f2 = readFile('turc.txt')
with open('result.txt', 'w') as f3:
for n, word in enumerate(WORDS):
if word:
f3.write('{}\t{}\n'.format(n, word))
Dernier essai en ce qui me concerne
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Tu n'avais pas dit qu'il y avait des lignes entièrement vides
# coding: utf-8
def open_file(filename):
res = {}
with open(filename) as file:
for line in file.readlines():
if line.strip():
num, val = line.strip().split("\t", 1)
res[num] = val
return res
file1 = open_file("francais.txt")
file2 = open_file("turc.txt")
with open("out.txt", "w") as f:
for key in sorted(file1.keys()):
value = file2.get(key) or file1[key]
f.write(key + "\t" + value)
import os
SIZE = 1024 * 1024
WORDS = [None for _ in range(SIZE)]
def readFile(path):
if not os.path.exists(path):
raise OSError('file does not exist, bad path -> {}'\
.format(path)
)
with open(path, encoding="ascii", errors='ignore') as f:
for line in f:
line = line.strip()
if line:
n, *word = line.split()
try:
n = int(n)
value = WORDS[n]
if not value:
if word:
WORDS[n] = word[0]
except ValueError:
print('error format line: {}'.format(line))
f1 = readFile('francais.txt')
f2 = readFile('turc.txt')
with open('result.txt', 'w') as f3:
for n, word in enumerate(WORDS):
if word:
f3.write('{}\t{}\n'.format(n, word))
et il y a aussi une ligne mal formée, celle présenté ci-dessous
VNUM LOCALE_NAME
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
On va voir ça !
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Dernier essai en ce qui me concerne
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)