J'ai un fichier texte dans ce format:
{
attribute1 attribute2 attribute3.... attributeN
value"A" value"B" value"C".... value"Z"
/* next line of values*/
}
Chaque mot est séparé par un onglet.
Comment convertir au format CSV? J'ai essayé d'utiliser Excel mais cela donne des problèmes de compatibilité.
Importez les données avec Excel (Données> Charger à partir d'un fichier texte), en utilisant tab comme séparateur de colonnes. Enregistrez ensuite le fichier au format csv.
Il ne peut pas avoir de problèmes de compatibilité, c'est une tâche de base et je l'ai fait assez souvent dans le passé.
Si vous pouvez utiliser un langage de script , vous pouvez donner Python un coup:
import csv
# read tab-delimited file
with open('yourfile.tsv','rb') as fin:
cr = csv.reader(fin, delimiter='\t')
filecontents = [line for line in cr]
# write comma-delimited file (comma is the default delimiter)
with open('yourfile.csv','wb') as fou:
cw = csv.writer(fou, quotechar='', quoting=csv.QUOTE_NONE)
cw.writerows(filecontents)
Exemple de session interprète:
>>> import csv
>>> with open('yourfile.tsv','rb') as fin:
... cr = csv.reader(fin, delimiter='\t')
... filecontents = [line for line in cr]
...
>>> with open('yourfile.csv','wb') as fou:
... cw = csv.writer(fou, quotechar='', quoting=csv.QUOTE_NONE)
... cw.writerows(filecontents)
...
>>> with open('yourfile.csv','rb') as see_how_it_turned_out:
... for line in see_how_it_turned_out:
... line
...
'attribute1,attribute2,attribute3,attributeN\r\n'
'value"A",value"B",value"C",value"Z"\r\n'
Remarques:
terminaison de ligne par défaut pour csv.writer
est \r\n
, mais si vous en avez besoin, vous pouvez spécifier une alternative comme argument de mot clé AKA kwarg .
Exemple alternatif de terminaison de ligne:
with open('yourfile.csv','wb') as fou:
cw = csv.writer(fou,quotechar='',quoting=csv.QUOTE_NONE,lineterminator='\n')
...
Voici du code Excel-VBA qui effectuera cette conversion. Collez-le dans l'éditeur visuel de base d'Excel (Alt-F11
) et exécutez-le (après avoir ajusté vos noms de fichiers, bien sûr).
Sub TabToCsv()
Const ForReading = 1, ForWriting = 2
Dim fso, MyTabFile, MyCsvFile, FileName
Dim strFileContent as String
Set fso = CreateObject("Scripting.FileSystemObject")
' Open the file for input.
Set MyTabFile = fso.OpenTextFile("c:\testfile.dat", ForReading)
' Read the entire file and close.
strFileContent = MyTabFile.ReadAll
MyTabFile.Close
' Replace tabs with commas.
strFileContent = Replace(expression:=strFileContent, _
Find:=vbTab, Replace:=",")
' Can use Chr(9) instead of vbTab.
' Open a new file for output, write everything, and close.
Set MyCsvFile = fso.OpenTextFile("c:\testfile.csv", ForWriting, True)
MyCsvFile.Write strFileContent
MyCsvFile.Close
End Sub