Comment puis-je analyser mon fichier CSV sans analyser la première ligne?Parser groovy csv et l'exportation vers la base de données
Ce cours fonctionne mais je ne veux pas analyser l'en-tête de mon fichier CSV.
import groovy.sql.Sql
class CSVParserService {
boolean transactional = false
def sql = Sql.newInstance("jdbc:mysql://localhost/RProject", "xxx", "xxx", "com.mysql.jdbc.Driver")
def CSVList = sql.dataSet("ModuleSet")
def CSVParser(String filepath, boolean header) {
def parse = new File(filepath)
// split and populate GeneInfo
parse.splitEachLine(',') {fields ->
CSVList.add(
Module : fields[0],
Function : fields[1],
Systematic_Name : fields[2],
Common_Name : fields[3],
)
return CSVList
}
}
}
-je changer ma classe, alors maintenant je:
import groovy.sql.Sql
class CSVParserService {
boolean transactional = false
def sql = Sql.newInstance("jdbc:mysql://localhost/RProject", "xxx", "xxx", "com.mysql.jdbc.Driver")
def CSVList = sql.dataSet("ModuleSet")
def CSVParser(String filepath, boolean header) {
def parse = new File(filepath).readLines()[1..-1]
parse.each {line ->
// split and populate GeneInfo
line.splitEachLine(',') {fields ->
CSVList.add(
Module : fields[0],
Function : fields[1],
Systematic_Name : fields[2],
Common_Name : fields[3],
)
return CSVList
}
}
}
}
fonctionne très bien, jusqu'à ce que cette partie dans mon CSV:
« Homo sapiens récepteur de l'interleukine 4 (IL4R), transcription variante 1, ARNm. "
Quand mon analyseur obtenir cette partie, il passe en 3 (qui devrait être en 1):
- Homo sapiens interleukine 4 récepteurs (IL4R)
- variante de transcription 1
- ARNm.
Comment puis-je résoudre ce problème? Nous vous remercions de votre aide.
- Nouveau commentaire - Voici une copie (2ème ligne) de ma ligne CSV:
"M6.6", NA, "ILMN_1652185", NA, NA, "IL4RA, CD124", NA, "NM_000418.2", "16", "16p12.1a", "Homo sapiens récepteur interleukine 4 (IL4R), variante de transcription 1, l'ARNm.", 3566, ...
Comme vous pouvez voir mon problème est en ligne "Homo sapiens interleukin 4 récepteur (IL4R), transcript variante 1, ARNm." ; Je ne veux pas couper le texte entre "et". Mon analyseur ne devrait séparer que des guillemets (mais pas des virgules entre guillemets). Par exemple j'ai "part1", "part2", "part3", je veux juste couper partie1, partie2, partie3, et s'il y a des virgules dans ma partie2, je ne veux pas couper ces virgules. En résumé, je veux juste ignorer les virgules dans les éléments entre guillemets.
Avez-vous envisagé d'utiliser un analyseur CSV qui fait tout cela pour vous? Comme Ostermiller? [http://ostermiller.org/utils/CSV.html][1] [1]: http://ostermiller.org/utils/CSV.html – Philippe
Enfin, je choisis cet analyseur CSV: http://opencsv.sourceforge.net/. Merci. –
Voici une autre librairie d'analyse csv pour Groovy que j'ai créée il y a longtemps: [GroovyCSV] (http://xlson.com/groovycsv/). C'est basé sur opencsv. – xlson