MATLAB: comment lire dans des cellules spécifiques contenant des noms de fichiers se terminant par «Pressure.mat»

J’ai une liste de 490 fichiers dans une matrice, je veux seulement lire les fichiers qui se terminent par ‘Pressure.mat’, si cela ne se termine pas par cela, je ne veux pas le lire. Quelle fonction puis-je utiliser pour ce faire? Même la création d’une nouvelle matrice qui ne contient que ces cellules spécifiques contenant les fichiers serait ce dont j’ai besoin.

Meilleure réponse

  • Vous pouvez exécuter une boucle et utiliser strfind. Recherchez Pressure.mat dans la chaîne, si la sortie n’est pas vide, vous devez lire le fichier.
  • MATLAB: recherche d’une sous-chaîne particulière dans un fichier texte

    Salut tout le monde, je recherche une partie particulière de mon fichier texte. J’ai utilisé TextScan mais le problème est que je ne sais pas formatSpecbien. Le contexte de mon fichier texte ressemble à ceci:
     
    /SoftwareComponents/DistMgr /SoftwareComponents/Dummy
     
    Je voudrais obtenir les noms d’enfants des composants logiciels, en fait, la sortie doit être:
     
    ans{1}= DistMgr
    ans{2}= Dummy
     
    C’est mon plaisir si quelqu’un peut aider. Je vous remercie

    Meilleure réponse

  • Le format réel de votre fichier texte n’est pas exactement clair. Toutes les entrées sont-elles séparées par un seul espace?
    Quoi qu’il en soit, si le fichier se compose uniquement d’une série de chaînes de texte, je n’utiliserais pas TextScanpour ça. Je voudrais simplement lire le fichier en une seule fois, puis utiliser une expression régulièrepour obtenir le résultat:
     

    filecontent = fileread('c:\somewhere\somefile.txt');
    scchildren = regexp(filecontent, '(?<=/SoftwareComponents/)\w+', 'match')

     

  • MATLAB: comment déterminer le nombre de données dans un fichier CSV «salissant», puis l’importer

    J’ai un fichier CSV qui ressemble à ceci:
     
    "","JOHN DOE","p0123TP01, Approved"
    "","Rectum (4)(Volume: 57.77)","CTV (21)(Volume: 32.39)"
    "0.0","100.0","100.0"
    "0.1","78.01999","100.0"
    "0.2","76.2245","100.0"
    "0.3","75.21035","100.0"
    [skipping to the end of the file]
    "58.1","","1.88277"
    "58.2","","0.21338"
    "58.3","","0.0"
     
    mais le nombre d’ensembles de données peut varier, je dois donc écrire un script flexible pour tenir compte du nombre de lignes et de colonnes de données:
     
    "","DOE, JOHN","revised blurring for Case 16, ANON, original; calculating correlation between blurred dose and toxicity","","","","","","","","","","","","","",""
    "","patient (1)(Volume: 18578.06)","Prostate (2)(Volume: 19.80)","Proximal-SV (3)(Volume: 6.40)","Rectum (4)(Volume: 70.44)","Bladder (5)(Volume: 143.70)","Intestine (6)(Volume: 8.40)","CutLine (7)(Volume: 415.77)","Air (8)(Volume: 5.06)","InsideRectum (9)(Volume: 36.17)","PTV1 (10)(Volume: 76.77)","PTVoriginal (11)(Volume: 80.89)","PTV2 (12)(Volume: 56.52)","Guide1 (13)(Volume: 81.79)","Guide2 (14)(Volume: 68.50)","guide (15)(Volume: 66.91)","CTV-operator (16)(Volume: 26.15)"
    "0.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.1","12.88921","100.0","100.0","69.70608","73.36377","2.54878","82.87909","16.40558","73.91824","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.2","12.06455","100.0","100.0","67.50839","69.03589","0.88936","79.92729","16.40558","71.92567","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.3","11.56745","100.0","100.0","65.82671","67.72518","0.32793","77.7594","16.40558","70.44129","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.4","11.09599","100.0","100.0","64.40629","66.56731","0.15624","75.78776","16.40558","69.10236","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.5","10.1524","100.0","100.0","63.25727","65.87648","0.07211","73.65644","16.40558","68.12462","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.6","9.48733","100.0","100.0","61.64318","64.92351","0.0103","67.57963","16.40558","65.96868","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.7","9.1257","100.0","100.0","60.35885","62.43443","0.0","59.25954","16.40558","65.12147","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    [... skipping to end of file ...]
    "58.1","0.00498","4.57181","0.23601","","","","","","","1.20431","1.143","1.63577","1.13037","1.34968","1.38174","3.51704"
    "58.2","4.9E-4","0.46111","0.0","","","","","","","0.1189","0.11285","0.1615","0.1116","0.13326","0.13642","0.34903"
    "58.3","0.0","0.0","","","","","","","","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
     
    De quel format texts.Spec ai-je besoin pour stocker ces données? Le code suivant génère un tableau de cellules 1 × 1 avec l’élément 0x2 double vide:
     
    function [StudyIDcol,DistributionType,OrganSpecification,Doses,Volumes,DoseUnit,VolumeUnit] = CreateTableVariables(folderpath,type,StudyID)
    % First we read the file. Code courtesy of Walter Roberson of the MathWorks community
    fid = fopen([folderpath,type,'/',StudyID,'.csv'],'rt'); % rt = 'read in text mode'
    if fid == -1 % added for debugging at the suggestion of Jan Hansen of the MathWorks community
    error('Author:Function:OpenFile', 'Cannot open file');
    end
    num = 0;
    % headers = cell % unfinished
    while true %endless loop requiring 'break' command to exit!
    H1 = fgetl(fid) ;
    if feof(fid); break; end
    H2 = fgetl(fid) ;
    if feof(fid); break; end
    datacell = textscan(fid, '%f%f', 'Delimiter', ',', 'CollectOutput', true) ; % originally '%f%f'
    if isempty(datacell) || isempty(datacell{1}); break; end
    % if any(isnan(datacell{1}(end,:))); datacell{1}(end,:) = []; end % commented out to verify the above command quits the loop
    num = num + 1;
    headers(num,:) = {H1, H2} ;
    data(num) = datacell; % We store it to the data cell array only after checking that it contains data.
    %fgetl(fid); %the empty line between organs
    end
    fclose(fid);
     
    je suis en train de lire le format textescan Documentation spécifiqueet plus essayant de résoudre ce problème. Veuillez m’aider à comprendre comment utiliser TextScan.
    J’essaie maintenant d’écrire un script pour importer de tels fichiers de manière flexible; Je dois apprendre à le scanner pour compter le nombre de lignes et de colonnes pour les données commençant à « 0.0 », « 100.0 », « 100.0 » (pas nécessairement ce nombre à chaque fois)…
     
    %function data = ReadMIMDVH(filepath)
    filepath = '/home/sony/Documents/research/data/MIM Cumulative DVH/planned/1.csv';
    % We write a script specifically to import MIM data.
    % First we scan the file to see how many rows of data it has.
    % We construct the format spec based on this number of rows and columns.
    formatSpec = ['%*s %*s %*s %*s %q %q',repmat('%f',[rows,columns])];
    % We read the file using textscan.
    fileID = fopen(filepath);
    DVH = textscan(fileID,formatSpec,'Delimiter',{',' '/n'});
    %end
     

    Meilleure réponse

  • J’utiliserais table de lecturequi devrait être capable de travailler seul sur les formatspec. Alors juste:
     

    t = readtable(filepath); %all done file is read and parsed.

     

  • MATLAB: À partir d’un fichier txt, lisez la ligne 4

    Désolé pour cette question de base, pour un fichier txt, je dois lire uniquement les 4 lignes, donc je saute les 3 non ci-dessus
     
    txt file
    Position 1: Level 1
    Position 2: Level 1
    Position 1: Level 2
    Position 2: Level 2
     
    Mon script
     
    fid = fopen('My.txt','r');
    C = textscan(fid, '%s', 'HeaderLines', 3)
    C{:}
    fclose(fid);
     
    Je dois seulement
     
    Position 2: Level 2
     

    Meilleure réponse

  •  

    fid = fopen('My.txt','r');
    C = textscan(fid, '%s', 'HeaderLines', 3, 'WhiteSpace', '', 'Delimiter', '\n');
    fclose(fid);
    line4 = C{1}{1};

     

  • MATLAB: comment analyser un tableau de chaînes Nx1 sans boucler à travers N

    J’ai un tableau de chaînes Nx1, et je ne peux pas comprendre comment extraire 6 morceaux de texte hors de celui-ci et dans un tableau de cellules Nx6. Les éléments de texte sont des nombres, mais il est plus simple de ne pas les traiter comme des nombres à ce stade.
    Voici une version jouet du tableau de chaînes, avec du code qui analyse correctement les éléments nécessaires de CCYYMMDD et hhmm du premier élément du tableau de chaînes:
     
    stringFile = ["nsasondewnpnC1.b1.20020428.184800.cdf"; ...
    "nsasondewnpnC1.b1.20020428.220500.cdf"; ...
    "nsasondewnpnC1.b1.20020428.235900.cdf"; ...
    "nsasondewnpnC1.b1.20020429.013100.cdf"; ...
    "nsasondewnpnC1.b1.20020429.182500.cdf"];
    charLaunch = textscan(stringFile(1),'%*18c %2c %2c %2c %2c %*c %2c %2c');
     
    charLaunch =
    Réseau de 1 × 6 cellules
    {’20’} {’02’} {’04’} {’28’} {’18’} {’48’}
    Cependant, les deux
     
    charLaunchAll = textscan(stringFile,'%*18c %2c %2c %2c %2c %*c %2c %2c');
     
    et
     
    charLaunchAll = cell(5,6);
    charLaunchAll = textscan(stringFile(:),'%*18c %2c %2c %2c %2c %*c %2c %2c');
     
    générer le même message d’erreur:
    Erreur lors de l’utilisation de TextScan
    La première entrée doit être un fichier-id valide ou un vecteur de caractères non vide.
    Existe-t-il un moyen d’extraire ces morceaux de texte de chaque membre du tableau sans créer de boucle?

    Meilleure réponse

  • Utiliser un simpleexpression régulière:
     

    C = {...
    'nsasondewnpnC1.b1.20020428.184800.cdf'; ...
    'nsasondewnpnC1.b1.20020428.220500.cdf'; ...
    'nsasondewnpnC1.b1.20020428.235900.cdf'; ...
    'nsasondewnpnC1.b1.20020429.013100.cdf'; ...
    'nsasondewnpnC1.b1.20020429.182500.cdf'};
    out = regexp(C,'\d{2}','match');
    out = vertcat(out{:})

     

  • MATLAB: Existe-t-il un moyen de lire seulement deux colonnes d’un fichier avec TextScan

     
    %Get events from text file
    prompt_totalfiles = 'Enter number of files you want to input: '; %asks for number of files
    total_files = input(prompt_totalfiles);
    fileids = cell(total_files,1);
    j = 1;
    Baseline_adjustment = 0.1; %put in baseline photodetector value here (the readout with the led on but the patch cable in pitch black
    wholedff = cell(1, 11);
    for file = 1:total_files
    [inputfile,path] = uigetfile('*.txt');
    fileids{file} = fopen(fullfile(path, inputfile));
    if fileids{file} == -1
    error('Failed to open file "%s"', fullfile(path, inputfile));
    end
    b = textscan(fileids{file},'%n %n',-1, 'delimiter', '/t');
    events = b{1};
    event_times = b{2};
     
    J’essaie d’utiliser ce code pour lire uniquement les deux premières colonnes du fichier texte. Cependant, cela ne semble pas fonctionner: ce que j’obtiens est une cellule 1 × 2 avec [3; 1] dans la première colonne et [819; 0] dans la seconde.
    Au lieu de cela, il devrait être [3; 3; 2; 1; 4; 5; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0] et [819; 826; 2279; 3427; 3907; 3919; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0].
    Merci!

    Meilleure réponse

  • Il y a7colonnes dans l’image de fichier que vous avez publiée. Vous pouvez ignorer une colonne spécifique en mettant un*entre le%et le descripteur.
    Essayez-le avec cet exemple (pour lire uniquement le premier2Colonnes):
     

    b = textscan(fileids{file},'%n %n %*n %*n %*n %*n %*n',-1, 'delimiter', '/t');

     

  • MATLAB: Lecture d’une table de N colonnes qui ont parfois N + 1 colonnes

    Salut à tous,
    Je recherche beaucoup sur le forum sans trouver de solution. Et pardonnez mon anglais je suis français 🙂
    Mon problème est le suivant:
    J’ai un fichier journal avec beaucoup d’informations. Le fichier journal peut atteindre 500 Mo (parfois même plus gros). Ce fichier journal est séparé en 2 parties principales. Une partie en-tête qui permet de récupérer facilement et rapidement des informations ligne par ligne, et une partie données.
    La partie données est composée denombreusestâches avec une table de données avec du texte avant et après.
    La structure de la table de données est la suivante:
     
    1 25.870 1.000 lhc 0.000 0.000 -20.140 24.449 1.42061512
    2 25.870 1.000 lhc 0.000 0.000 -20.520 24.519 1.35075912
    3 25.870 1.000 lhc 0.000 0.000 -20.951 24.582 1.28833133
    4 25.870 1.000 lhc 0.000 0.000 -21.434 24.638 1.23204173
    5 25.870 1.000 lhc 0.000 0.000 -21.958 24.689 1.18086597
    6 25.870 1.000 lhc 0.000 0.000 -22.503 24.735 1.13498198
    7 25.870 1.000 lhc 0.000 0.000 -23.148 24.781 1.08854135
    8 25.870 1.000 lhc 0.000 0.000 -23.741 24.824 1.04623596
    9 25.870 1.000 lhc 0.000 0.000 -24.244 24.863 1.00744521
    10 25.870 1.000 lhc 0.000 0.000 -24.626 24.898 0.97159033
    11 25.870 1.000 lhc 0.000 0.000 -24.876 24.932 0.93839531
    12 25.870 1.000 lhc 0.000 0.000 -25.010 24.962 0.90779039
    13 25.870 1.000 lhc 0.000 0.000 -25.057 24.990 0.87971152
    14 25.870 1.000 lhc 0.000 0.000 -25.063 25.016 0.85443812
    15 25.870 1.000 lhc 0.000 0.000 -25.072 25.038 0.83238819
    16 25.870 1.000 lhc 0.000 0.000 -25.115 25.056 0.81396378
    17 25.870 1.000 lhc 0.000 0.000 -25.220 25.070 0.79981872
    18 25.870 1.000 lhc 0.000 0.000 -25.406 25.079 0.79060410
    19 25.870 1.000 lhc 0.000 0.000 -25.611 25.078 0.79173920
    20 25.870 1.000 lhc 0.000 0.000 -25.936 25.068 0.80208976
    21 25.870 1.000 lhc 0.000 0.000 -26.373 25.047 0.82291587
    22 25.870 1.000 lhc 0.000 0.000 -26.891 25.014 0.85576164
    23 25.870 1.000 lhc 0.000 0.000 -27.437 24.969 0.90124460
    24 25.870 1.000 lhc 0.000 0.000 -27.928 24.910 0.96048807
    25 25.870 1.000 lhc 0.000 0.000 -28.254 24.835 1.03468974
    26 25.870 1.000 lhc 0.000 0.000 -28.317 24.746 1.12353854
    27 25.870 1.000 lhc 0.000 0.000 -28.070 24.642 1.22847010
    28 25.870 1.000 lhc 0.000 0.000 -27.662 24.552 1.31821801
    29 25.870 1.000 lhc 0.000 0.000 -27.101 24.452 1.41784749
    30 25.870 1.000 lhc 0.000 0.000 -26.466 24.343 1.52711338
    31 25.870 1.000 lhc 0.000 0.000 -25.820 24.224 1.64568471 **
     
    Comme vous pouvez le voir à la ligne 31, ** apparaît au hasard sous forme de 6e colonne. Ce n’est qu’une partie des données qu’il contient pour des milliers de lignes.
    J’utilise le code suivant pour récupérer ces données. Cela fonctionne bien mais j’ai un problème de performances avec un gros fichier. Cela prend trop de temps. Avez-vous une solution pour m’aider à améliorer les performances? Mon problème si l’interruption est causée par ces **. Plus j’ai du ralentissement.
    Où est-ce que l’identification du fichier actuel a été ouverte
     
    % Store all the file in one variable in order to find line of begining and end of tasks and
    % doing more quickly research
    outFile = textscan(fid, '%s', 'Delimiter', '\n');
    frewind(fid);
    %Variable
    taskSummaryFlagOn='No. goal weight pol. rot. att. 1. comp. 2. comp. residue';
    taskSummaryFlagOff='Maximum of 1. component:';
    % Find the rows where tasks results are
    needle=strfind(outFile{1}, taskSummaryFlagOn);
    rowsStartTask= find(~cellfun('isempty', needle));
    needle=strfind(outFile{1}, taskSummaryFlagOff);
    rowsEndTask= find(~cellfun('isempty', needle));
    nbStartLine=0;nbEndLine=2;
    %PreAllocation of the variable for better performances
    dataSimu=cell(max(size(nbLineData)),9);
    nbLineData=zeros(max(size(rowsStartTask)),1);% nbLineData will be to ensure that all the data are correctly retrieve
    % Loop
    for i=1:max(size(rowsStartTask))
    nbLineData(i)=rowsEndTask(i)-rowsStartTask(i)-nbStartLine-nbEndLine;
    dataSimu(i,:)=textscan(fid,'%f %f %f %s %f %f %f %f %f','headerlines', rowsStartTask(i));
    % Exception when the line of data finish with **
    while size(dataSimu{i,1},1)~=nbLineData(i)
    fgetl(fid);% reading the final '**'
    buff=textscan(fid,'%f %f %f %s %f %f %f %f %f');
    for j=1:max(size(buff))
    dataSimu{i,j}=[dataSimu{i,j};buff{:,j}];
    end
    end
    frewind(fid);
    end
     
    Si vous avez besoin de plus d’informations pour comprendre mon problème, je vous fournirai plus de détails.
    Merci pour le temps que vous passerez à m’aider 🙂

    Meilleure réponse

  • En supposant que vous n’avez pas besoin des informations ‘**’, vous pouvez essayer cette solution à partir duexemples de fscanfqui saute le reste de la ligne après les données que vous attendez:
     

    dataSimu(i,:)=textscan(fid,'%f %f %f %s %f %f %f %f %f %*[^\n]'','headerlines', rowsStartTask(i));

     

  • MATLAB: erreur lors de l’utilisation de TextScan lors de la tentative de lecture dans les deux premières colonnes d’un fichier texte

    J’essaie d’utiliser le code suivant pour lire dans un fichier texte.
     
    %Get events from text file
    prompt_totalfiles = 'Enter number of files you want to input: '; %asks for number of files
    total_files = input(prompt_totalfiles);
    fileNames = cell(total_files,1);
    for file = 1:total_files
    [inputfile,path] = uigetfile('*.txt');
    fileNames{file} = fopen(inputfile);
    end
    j = 1;
    Baseline_adjustment = 0.1; %put in baseline photodetector value here (the readout with the led on but the patch cable in pitch black
    dff1=[];dff2=[];dff3=[];dff4=[];dff5=[];dff6=[];dff7=[];dff8=[];dff9=[];dff10=[];dff11=[];
    wholedff={dff1,dff2,dff3,dff4,dff5,dff6,dff7,dff8,dff9,dff10,dff11};
    %Read formatted data from text file
    for file = 1:total_files
    b = textscan(fileNames{file},'%n %n', -1, 'delimiter', '/t');
     
    Voici l’erreur que je reçois:
     
    Error using textscan
    Invalid file identifier. Use fopen to generate a valid file identifier.
    Error in StimulusTestNew (line 17)
    b = textscan(fileNames{file},'%n %n', -1, 'delimiter', '/t');
     
    Le fichier texte que je veux lire est le suivant: je veux lire uniquement les deux premières colonnes.
    Pouvez-vous m’aider s’il vous plaît? Merci!

    Meilleure réponse

  • « Identifiant de fichier non valide. Utilisez fopen pour générer un identifiant de fichier valide. »
    Vous obtiendrez généralement cette erreur car l’ID de fichierfopenvous a donné est -1 qui indique quefopenn’a pas pu ouvrir le fichier.
    Il y a plusieurs raisons pour lesquellesfopenpourrait ne pas ouvrir le fichier. Le plus probable est que vous lui avez demandé d’ouvrir un fichier qui n’existait pas (au moins à l’emplacement où vous lui avez dit de regarder).
    Pour commencer, vous récupérez le chemin du sélectionné avecuigetfilemais ne dis jamaisfopende regarder dans cette voie.
     
    filenames{file} = fopen(fullfile(path, inputfile));
     
    peut résoudre le problème. Bien sûr, vous devez toujours vérifier quefopenréussi, alors ajoutez:
     
    if filenames{file} == -1
    error('Failed to open file "%s"', fullfile(path, inputfile));
    end
     
    Je recommande fortement de renommer celanoms de fichiersvariable à autre chose,fileidspeut-être car il ne contient absolument aucun nom de fichier. Il contient des identificateurs de fichier: des nombres.
    De plus, je recommande fortement d’ouvrir, de lire et de fermer le fichier dans la même boucle plutôt que de le faire sur 3 boucles différentes. Cependant, si vous utilisez une version raisonnablement récente de matlab, je vous recommande d’utilisertable de lectureau lieu deTextScan. table de lecturedevrait comprendre le format du fichier par lui-même, et ouvre et ferme le fichier pour vous.
    Enfin, notez que les variables numérotées sont toujours une mauvaise idée, vous forçant à écrire beaucoup plus de code que nécessaire. Ici, vous auriez pu créerwholedffavec juste:
     

    wholedff = cell(1, 11);

     

  • MATLAB: Comment importer un fichier csv avec des titres (type texte) dans une matrice? – seuls les chiffres sont nécessaires

    Bonjour communauté,
    J’ai un fichier csv avec la première ligne comme titre (tapez du texte). Mais je veux écrire un script, donc l’outil d’importation ne peut pas aider. J’ai essayé ‘importData’, csvread (mais il ne prend en charge que les feuilles avec des nombres) et textscan. Ce serait le meilleur quand je pourrais choisir la gamme – je n’ai besoin que des chiffres.
    Mon fichier csv a la composition suivante:
    # | date | temps | température 1 | température 2 | … .. | température 732
    1 31-10-19 12:31:14 14,2342 15,1234 ….
    2 31-10-19 12:31:15 16,4442 15,6283 ….
    3 31-10-19 12:31:16 14,8552 15,8294 ….
    Je n’ai besoin que des valeurs de température, donc je veux choisir la plage. Ou existe-t-il une autre possibilité d’importer les valeurs numériques?
    Merci de votre aide!
    Michael

    Meilleure réponse

  • Tous les deuxtable de lectureetmatrice de lecturetraitera ce fichier sans problème. J’aurais pensé queimporter des donnéesdéléguerait àtable de lecturedonc je suis surpris que cela n’ait pas fonctionné pour vous.
    table de lectureva étiqueter les colonnes en fonction de l’en-tête.
  • MATLAB: est-ce que je reçois une erreur lorsque j’utilise «\» comme délimiteur dans la commande TEXTSCAN

    Quand j’exécute le code:
     
    p=cd;
    textscan(p,'%s','delimiter','\');
     
    Je reçois l’erreur:
     
    ??? Error using ==> textscan
    Delimiter has incorrect \ constant.
     

    Meilleure réponse

  • Cette modification a été intégrée à la documentation de la version 2009b (R2009b). Pour les versions précédentes, lisez ci-dessous pour toute information supplémentaire:
    Il s’agit d’un comportement attendu dans MATLAB. Le caractère ‘\’ est un opérateur MATLAB et est donc interprété. Pour passer le caractère «\» sous sa forme non interprétée à la commande TEXTSCAN, il doit être précédé du caractère d’échappement «\». Par conséquent, pour utiliser ‘\’ comme délimiteur dans la commande TEXTSCAN, exécutez:
     

    textscan(p,'%s','delimiter','\\');