J'essaie de rechercher une valeur dans mon fichier CSV et si je le trouve, écrivez une valeur à la fin de sa ligne.
Par exemple, si le CSV ressemble à ceci: et je cherche 111 et je veux écrire 0 dans la première cellule vide de sa ligne, comment puis-je le faire? P> < / p>
3 Réponses :
Il n'y a aucun moyen d'insérer des données au milieu d'un fichier. L'écriture au milieu d'un fichier écrasera les données à cette position. Au lieu de:
Exemple: P>
with open('test.csv') as f: l = f.readlines() l[4] += '0' with open('test2.csv', 'w') as f: f.writelines(l)
@jarmod Vous avez raison, mais cela écrasera les données existantes dans cette position. Je vais changer le texte de réponse
En tant que Sidenote: Pour de très volumineux fichiers, au lieu de réécrire les premières lignes, vous voudrez peut-être chercher i> à la position correcte. Mais pour la plupart des fichiers modérément dimensionnés, l'approche de cette réponse fera.
with open('text.csv', 'r') as f: rows = [x.split() for x in f] with open('text_1.csv', 'w') as f: for row in rows: f.write(row[0] + " " + row[1]) if row[0] == '111': # or you can check for multiple values here. f.write("0") f.write("\n")
L'approche x.split () code> pour analyser les fichiers CSV est une mauvaise idée. Le format CSV est plus délicat que vous ne le pensez. Au lieu de cela, il est préférable d'utiliser le package CSV intégré.
Ou: lignes = [x.split () pour x en ouvert ("text.csv ')]
@RJE Pouvez-vous s'il vous plaît expliquer pourquoi fractionné code> peut échouer. Je ne sais pas / rencontré des problèmes majeurs avec elle. Voulais savoir.
Il y a plusieurs raisons. On est que vous pourriez avoir un champ cité contenant un délimiteur. Dans ce cas, votre méthode pourrait échouer.
Cela vous permettra d'ouvrir,
Vous voulez donc
111 1 code> comme étant comme
111 1 0 code> ou
111 0 code>? Et chaque ligne n'aura que deux valeurs? séparé par
espace code>?
Non non, je veux que ce soit 111 1 0, ce qui signifie que la ligne aura maintenant 3 valeurs
@Hamzaahmad
première cellule vide code>: quel est le séparateur? Onglet ou espace?
À propos, pourquoi utilisez-vous WhitSpace comme délimiteur de terrain dans une CSV?