2016-12-20 4 views
0

J'ai un fichier csv qui est quelque chose comme BM13302, EM13203, etc Je dois lire ceci à partir d'un fichier puis le reformater à quelque chose comme 'BM13302', 'EM13203', etc Ce qui me dérange, c'est comment exporter (écrire le presse-papiers ou un fichier, je peux copier et coller.) C'est un petit projet pour reformater une partie d'un code SQL donné pour moi dans un format malpropre et je dois passer un peu de temps à le formater.Je voudrais juste pointer python vers un répertoire et passer la liste dans le fichier et l'exporter tout ce dont j'ai besoin.Exportation Python vers un TXT formaté ou vers un presse-papiers

J'ai le fo Code llowing travail

import os 
f = open(r"/User/person/Desktop/folder/file.csv") 
csv_f = csv.reader(f) 

for row in csv_f: 
    print(row) 

-je obtenir les résultats attendus

Je voudrais savoir comment prendre la liste (?) et le formater comme celui-ci 'BM1234', 'BM2351', '20394', etc .... et copier ce fichier dans le presse-papiers

Je pensais que quelque chose faire quelque chose comme

with open('/Users/person/Desktop/csv/export.txt') as f: 
    f.write("open=", + "', '") 
f.close() 

rien est imprimé. Je ne trouve pas un exemple de ce dont j'ai besoin. Quelqu'un peut-il m'aider?

Beaucoup appréciez!

+0

Pour écrire dans le fichier, vous devez ouvrir le fichier en "mode écriture" '- ie. 'open (...," w ")' – furas

+0

si vous utilisez 'with open()' alors vous n'avez pas besoin de 'close()'. Il se fermera automatiquement. – furas

+0

Donc tout ce que vous voulez faire est de mettre des guillemets simples autour de chaque mot? – tdelaney

Répondre

1

Vous pouvez avoir les choses citation du module csv pour vous. Pour autant que je sache, il n'y a pas de presse-papiers dans les librairies standard de python, mais il existe différents mécanismes. Ici, j'utilise pyperclip ce qui est raisonnable pour les copies en texte seul.

import pyperclip 
import csv 
import io 

def clip_csv(filename): 
    outbuf = io.StringIO() 
    with open('file.csv', newline='') as infile: 
     incsv = csv.reader(infile, skipinitialspace=True) 
     outcsv = csv.writer(outbuf, quotechar="'", quoting=csv.QUOTE_ALL) 
     outcsv.writerows(incsv) 
    pyperclip.copy(outbuf.getvalue()) 

clip_csv('file.csv') 
# DEBUG: Verify by printing clipboard 
print(pyperclip.paste()) 
+0

Parfait, j'allais utiliser pyperclip mais je ne connaissais pas io. Merci beaucoup. Je l'ai rendu un peu plus intelligent mais en prenant et en plaçant une variable pour contenir l'entrée d'un nom de fichier et l'exécuter normalement, de cette façon ce n'est pas toujours le même fichier statique. Vous Rock tdelaney !! –

0

Je ne suis pas sûr, mais je pense que vous essayez d'ajouter citation ombles ' à toutes les données csv

import csv 

with open('export.csv', 'w') as f: 

    # use quote char `'` for all data 
    writer = csv.writer(f, quotechar="'", quoting=csv.QUOTE_ALL) 

    writer.writerow(["BM1234", "BM2351", "20394"])