Edit: J'ai pris les conseils de Jighdan et j'ai commencé à utiliser des fichiers JSON. Cela semble fonctionner! Les opérations que vous pouvez faire avec le paquet JSON incluent beaucoup de ce dont j'avais besoin. Merci pour les réponses à tous!
Par exemple, j'ai un fichier qui ressemble à ceci. P> Je veux pouvoir recevoir des données telles que C3: 21,40 et recherchez le fichier pour C3 et le mettre à jour afin que le fichier ressemble à ceci. p> Si la clé n'existe pas, par exemple je reçois C5: 32,11, il ajoute une nouvelle ligne comme celle-ci. P> import fileinput
text_to_search = 'hello'
replacement_text = 'good by'
with fileinput.FileInput('TEST.txt', inplace=True, backup='.bak') as file:
for line in file:
print(line.replace(text_to_search, replacement_text), end='')
3 Réponses :
Ceci est certainement possible. Votre fichier texte a déjà la forme d'un dictionnaire, alors, lorsque vous le lisez, mettez simplement les données dans un dictionnaire. Ensuite, vous pouvez facilement remplacer ou ajouter des touches au dictionnaire et écrivez le dictionnaire dans le fichier dans le format de chaîne d'origine.
quelque chose comme ceci: p>
input = 'C3:32,11'
with open('text.txt', 'r') as f:
# build dictionary
d = {}
for str in f.readlines():
key, value = str.split(':')
d[key] = value.strip()
ikey, ivalue = input.split(':') # user input also has to be split
d[ikey] = ivalue.strip()
with open('text.txt', 'w') as f:
# stringify
for key, value in d.items():
f.write(':'.join([key, value]) + '\n')
My Toile:
checker = 'C6:32,11'
present = False
new_file = []
with open('change.txt', 'r') as f:
for line in f:
if checker[:2] == line[:2] and checker[3:] is not line[3:]:
new_file.append(line.replace(line[3:].strip('\n'), checker[3:]))
present = True
else:
new_file.append(line)
with open('change.txt', 'w') as f:
f.writelines(new_file)
if not present:
f.writelines('\n')
f.writelines(checker)
solution avec l'utilisation de Lambda et compréhension de la liste
input = 'C3:32,11'
with open('test.txt', 'r') as f:
head = lambda x: x[0:x.find(':')] # get head of line from 0 to position of :
# use if ... else list comprehension and save output in box
box = [input + '\n' if head(line) == head(input) else line for line in f.readlines()]
with open('test.txt', 'w') as f:
[f.write(line) for line in box] # overwrite test.txt with content of box
A Pour texte dans et remplacer le sous ou le texte complet doit fonctionner! Qu'est-ce que tu as essayé jusque-là?
Ceci est le plus proche que j'ai obtenu
importer fichierInput texte_to_search = 'Hello' remplacement_text_text = 'bon par' avec fichierInput.fileinput ('Test.txt', emplacement = true, sauvegarde = "BAK") en tant que fichier: Ligne dans Fichier: Imprimer (ligne.replace (text_to_search, remplacement_text), end = '') code> mais il remplace tout le texte. Ne pas mettre à jour la valeur comme je veux.