Skip to content

Commit cfa7de3

Browse files
committed
Añade una aclaración sobre CSV
1 parent e7946a3 commit cfa7de3

File tree

4 files changed

+113
-41
lines changed

4 files changed

+113
-41
lines changed

docs/01.intro/02a.serial.html

Lines changed: 54 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ <h1><span class="section-number">1.2.1. </span>Lenguajes de serialización de da
100100
<li><p>Los datos están estructurados en registros, cada uno de los cuales ocupa una
101101
línea. Los <a class="reference external" href="https://es.wikipedia.org/wiki/Nueva_l%C3%ADnea">cambios de línea</a> deben estar codificados
102102
tal como se hace en sistemas MS-DOS, o sea, con los dos caracteres
103-
<code class="docutils literal notranslate"><span class="pre">\\r\\n</span></code> (<code class="docutils literal notranslate"><span class="pre">CRLF</span></code>)<a class="footnote-reference brackets" href="#id14" id="id2" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></li>
103+
<code class="docutils literal notranslate"><span class="pre">\\r\\n</span></code> (<code class="docutils literal notranslate"><span class="pre">CRLF</span></code>)<a class="footnote-reference brackets" href="#id15" id="id2" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p></li>
104104
<li><p>Cada registro, a su vez, se divide en campos separados entre sí por un
105105
delimitador. El delimitador es habitualmente una coma, pero no
106106
necesariamente, por lo que definir cuál es deberá hacerse en los procesos de
@@ -110,9 +110,12 @@ <h1><span class="section-number">1.2.1. </span>Lenguajes de serialización de da
110110
contenga los nombres de los campos. No hay forma de notar que este primer
111111
registro es de cabecera, por lo que su interpretación debe especificarse en
112112
el proceso de importación.</p></li>
113-
<li><p>Los campos, en general, no necesitan entrecomillarse (con comillas dobles) a
114-
menos que contenga un carácter que distorsione la lectura: el delimitador, el
115-
cambio de línea o la propia comilla doble.</p></li>
113+
<li><p>Los espacios siempre se consideran parte del valor del campo, por lo que
114+
deben tenerse en cuenta.</p></li>
115+
<li><p>Los campos, en general, no necesitan entrecomillarse (con comillas dobles),
116+
pero es obligatorio que lo estén si contienen uno de los tres caracteres que
117+
distorsiona la lectura: el delimitador, el cambio de línea o la propia
118+
comilla doble<a class="footnote-reference brackets" href="#id16" id="id3" role="doc-noteref"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a>.</p></li>
116119
<li><p>En un campo entrecomillado, si el texto contiene un carácter de comilla doble
117120
este debe representarse con dos caracteres seguidos de comilla doble.</p></li>
118121
</ol>
@@ -126,7 +129,7 @@ <h1><span class="section-number">1.2.1. </span>Lenguajes de serialización de da
126129
</div>
127130
</section>
128131
<section id="json">
129-
<span id="id3"></span><h2><span class="section-number">1.2.1.2. </span><abbr title="JavaScript Object Notation">JSON</abbr><a class="headerlink" href="#json" title="Enlace permanente a este encabezado"></a></h2>
132+
<span id="id4"></span><h2><span class="section-number">1.2.1.2. </span><abbr title="JavaScript Object Notation">JSON</abbr><a class="headerlink" href="#json" title="Enlace permanente a este encabezado"></a></h2>
130133
<p>Este lenguaje nació como forma de representar objetos en <a class="reference external" href="https://es.wikipedia.org/wiki/JavaScript">Javascript</a>, por lo que
131134
su aspecto guarda bastante parecido con ellos. Muy probablemente por esta
132135
filiación con el lenguaje de programación se usa habitualmente en la transmisión
@@ -223,7 +226,7 @@ <h1><span class="section-number">1.2.1. </span>Lenguajes de serialización de da
223226
</pre></div>
224227
</div>
225228
</div>
226-
</details><p>Las ideas que inspiran este documento son las siguientes<a class="footnote-reference brackets" href="#id15" id="id4" role="doc-noteref"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a>:</p>
229+
</details><p>Las ideas que inspiran este documento son las siguientes<a class="footnote-reference brackets" href="#id17" id="id5" role="doc-noteref"><span class="fn-bracket">[</span>3<span class="fn-bracket">]</span></a>:</p>
227230
<ul class="simple">
228231
<li><p>De cada profesor incluimos algunos datos que nos resultan relevantes.</p></li>
229232
<li><p>Si no se expresa el apelativo, es que se le nombra con su nombre de pila.</p></li>
@@ -375,7 +378,7 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
375378
(<code class="docutils literal notranslate"><span class="pre">{</span></code>) y cierre (<code class="docutils literal notranslate"><span class="pre">}</span></code>).</p></li>
376379
<li><p>Como separador entre parejas clave-valor, se usa la coma.</p></li>
377380
<li><p>Como separador entre clave y valor se usa «<code class="docutils literal notranslate"><span class="pre">:</span></code>».</p></li>
378-
<li><p>Las claves sólo pueden ser de tipo cadena<a class="footnote-reference brackets" href="#id16" id="id5" role="doc-noteref"><span class="fn-bracket">[</span>3<span class="fn-bracket">]</span></a>.</p></li>
381+
<li><p>Las claves sólo pueden ser de tipo cadena<a class="footnote-reference brackets" href="#id18" id="id6" role="doc-noteref"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></a>.</p></li>
379382
<li><p>Cada clave dentro de un mismo objeto debe ser única.</p></li>
380383
<li><p>Los valores pueden ser de cualquier tipo.</p></li>
381384
</ul>
@@ -412,13 +415,13 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
412415
</section>
413416
</section>
414417
<section id="yaml">
415-
<span id="id6"></span><h2><span class="section-number">1.2.1.3. </span><abbr title="YAML Ain't Markup Language">YAML</abbr><a class="headerlink" href="#yaml" title="Enlace permanente a este encabezado"></a></h2>
418+
<span id="id7"></span><h2><span class="section-number">1.2.1.3. </span><abbr title="YAML Ain't Markup Language">YAML</abbr><a class="headerlink" href="#yaml" title="Enlace permanente a este encabezado"></a></h2>
416419
<p><abbr title="YAML Ain't Markup Language">YAML</abbr> (<a class="reference external" href="https://yaml.org">página web oficial</a>) es otro lenguaje de
417420
serialización que, como <abbr title="JavaScript Object Notation">JSON</abbr>, construye su estructura de datos basándose en el
418421
concepto de <a class="reference internal" href="#json-nodo"><span class="std std-ref">nodo</span></a> (escalar, de secuencia o de mapa), lo que
419422
permite que en principio puedan compartir nichos de uso. En la práctica <abbr title="YAML Ain't Markup Language">YAML</abbr>
420423
se usa más para la escritura de archivos de configuración y <abbr title="JavaScript Object Notation">JSON</abbr> para la
421-
transmisión de datos entre servidor y cliente<a class="footnote-reference brackets" href="#id17" id="id7" role="doc-noteref"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></a>. Su última especificación es
424+
transmisión de datos entre servidor y cliente<a class="footnote-reference brackets" href="#id19" id="id8" role="doc-noteref"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span></a>. Su última especificación es
422425
<a class="reference external" href="https://yaml.org/spec/1.2.2/">YAML 1.2.2</a>.</p>
423426
<p id="yaml-1ej">Un ejemplo sencillo de este tipo de documentos es:</p>
424427
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">%YAML</span><span class="w"> </span><span class="m">1.2</span>
@@ -499,7 +502,7 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
499502
soporte no es nativo y hay que añadirlo a través de la <a class="reference external" href="https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml">extensión YAML</a>.</p></li>
500503
</ul>
501504
<section id="yaml-struct">
502-
<span id="id8"></span><h3><span class="section-number">1.2.1.3.1. </span>Estructura<a class="headerlink" href="#yaml-struct" title="Enlace permanente a este encabezado"></a></h3>
505+
<span id="id9"></span><h3><span class="section-number">1.2.1.3.1. </span>Estructura<a class="headerlink" href="#yaml-struct" title="Enlace permanente a este encabezado"></a></h3>
503506
<p>Un archivo o un flujo de información está constituido por uno o más documentos
504507
<abbr title="YAML Ain't Markup Language">YAML</abbr> que se separan a través de tres guiones seguidos (<code class="code docutils literal notranslate"><span class="pre">---</span></code>). La
505508
estructura de cada documento es:</p>
@@ -666,9 +669,9 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
666669
<dt><strong>Numeros en coma flotante</strong> (<code class="docutils literal notranslate"><span class="pre">float</span></code>)</dt><dd><p>Tiene también varias expresiones:</p>
667670
<ul class="simple">
668671
<li><p>La habitual con punto separador <code class="code docutils literal notranslate"><span class="pre">123.45</span></code>.</p></li>
669-
<li><p>En notación científica <code class="code docutils literal notranslate"><span class="pre">1.25e+5</span></code><a class="footnote-reference brackets" href="#id18" id="id9" role="doc-noteref"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span></a>)</p></li>
672+
<li><p>En notación científica <code class="code docutils literal notranslate"><span class="pre">1.25e+5</span></code><a class="footnote-reference brackets" href="#id20" id="id10" role="doc-noteref"><span class="fn-bracket">[</span>6<span class="fn-bracket">]</span></a>)</p></li>
670673
<li><p>Valores infinitos: <code class="code docutils literal notranslate"><span class="pre">.inf</span></code> y <code class="code docutils literal notranslate"><span class="pre">-.inf</span></code> (<a class="reference internal" href="#yaml-core-schema"><span class="std std-ref">core schema</span></a>).</p></li>
671-
<li><p><em>No es un número</em>: <code class="code docutils literal notranslate"><span class="pre">.nan</span></code><a class="footnote-reference brackets" href="#id19" id="id10" role="doc-noteref"><span class="fn-bracket">[</span>6<span class="fn-bracket">]</span></a> (<a class="reference internal" href="#yaml-core-schema"><span class="std std-ref">core schema</span></a>).</p></li>
674+
<li><p><em>No es un número</em>: <code class="code docutils literal notranslate"><span class="pre">.nan</span></code><a class="footnote-reference brackets" href="#id21" id="id11" role="doc-noteref"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span></a> (<a class="reference internal" href="#yaml-core-schema"><span class="std std-ref">core schema</span></a>).</p></li>
672675
</ul>
673676
</dd>
674677
</dl>
@@ -702,7 +705,7 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
702705
<code class="code docutils literal notranslate"><span class="pre">false</span></code> o <code class="code docutils literal notranslate"><span class="pre">null</span></code> sin entrecomillar tampoco se consideran
703706
cadenas. Entrecomillados esos valores, sin embargo, sí será cadenas.</p>
704707
</div>
705-
<p>Cuando las cadenas son largas<a class="footnote-reference brackets" href="#id20" id="id11" role="doc-noteref"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span></a>, hay también modo de escribirlas cómodamente:</p>
708+
<p>Cuando las cadenas son largas<a class="footnote-reference brackets" href="#id22" id="id12" role="doc-noteref"><span class="fn-bracket">[</span>8<span class="fn-bracket">]</span></a>, hay también modo de escribirlas cómodamente:</p>
706709
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">larga</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
707710
<span class="w"> </span><span class="no">Este cadena contiene</span>
708711
<span class="w"> </span><span class="no">varias líneas que conservan los</span>
@@ -737,7 +740,7 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
737740
<div class="admonition note">
738741
<p class="admonition-title">Nota</p>
739742
<p>Para anidar (el cuarto elemento es, a su vez, un <em>array</em>) se usa
740-
el sangrado mediante caracteres de espaciados<a class="footnote-reference brackets" href="#id21" id="id12" role="doc-noteref"><span class="fn-bracket">[</span>8<span class="fn-bracket">]</span></a>. No hay ninguna regla
743+
el sangrado mediante caracteres de espaciados<a class="footnote-reference brackets" href="#id23" id="id13" role="doc-noteref"><span class="fn-bracket">[</span>9<span class="fn-bracket">]</span></a>. No hay ninguna regla
741744
sobre cuántos son apropiados, pero debe ser consistente. En el ejemplo,
742745
como se han usado tres para el primer elemento &quot;<em>array dentro de un
743746
array</em>&quot;, por lo que el segundo también de ser sangrado con otros tres.
@@ -968,7 +971,7 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
968971
<span class="w"> </span><span class="no">debería soportar el procesador.</span>
969972
</pre></div>
970973
</div>
971-
<p>En el ejemplo <code class="code docutils literal notranslate"><span class="pre">!ex!tiporaro</span></code> equivale a <code class="code docutils literal notranslate"><span class="pre">!&lt;tag:ejemplo.org:2023:tiporaro&gt;</span></code><a class="footnote-reference brackets" href="#id22" id="id13" role="doc-noteref"><span class="fn-bracket">[</span>9<span class="fn-bracket">]</span></a>.</p>
974+
<p>En el ejemplo <code class="code docutils literal notranslate"><span class="pre">!ex!tiporaro</span></code> equivale a <code class="code docutils literal notranslate"><span class="pre">!&lt;tag:ejemplo.org:2023:tiporaro&gt;</span></code><a class="footnote-reference brackets" href="#id24" id="id14" role="doc-noteref"><span class="fn-bracket">[</span>10<span class="fn-bracket">]</span></a>.</p>
972975
</section>
973976
</section>
974977
<section id="ejercicios-resueltos">
@@ -1183,52 +1186,71 @@ <h3><span class="section-number">1.2.1.2.3. </span>Tipos de nodos<a class="heade
11831186
</ul>
11841187
<p class="rubric">Notas al pie</p>
11851188
<aside class="footnote-list brackets">
1186-
<aside class="footnote brackets" id="id14" role="note">
1189+
<aside class="footnote brackets" id="id15" role="note">
11871190
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id2">1</a><span class="fn-bracket">]</span></span>
11881191
<p>Que, curiosamente, es justo lo contrario que se hacía en una máquina de
11891192
escribir en las que primero se cambiaba de línea y luego se volvía el carro.</p>
11901193
</aside>
1191-
<aside class="footnote brackets" id="id15" role="note">
1192-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id4">2</a><span class="fn-bracket">]</span></span>
1194+
<aside class="footnote brackets" id="id16" role="note">
1195+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id3">2</a><span class="fn-bracket">]</span></span>
1196+
<p>Obsérvese que cuando un campo se entrecomilla, las comillas dobles
1197+
siempre deben ser el primero y el último carácter del campo, ya que por la
1198+
regla anterior los espacios se consideran parte del valor del campo. Así
1199+
pues, el segundo campo de esta línea es inválido:</p>
1200+
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>1, &quot;A B&quot;
1201+
</pre></div>
1202+
</div>
1203+
<p>puesto que, aunque en este caso no sea obligatorio, se debe entrecomillar
1204+
todo el campo:</p>
1205+
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>1,&quot; A B&quot;
1206+
</pre></div>
1207+
</div>
1208+
<p>y, si la intención es que no hubiera espacio, no haberlo escrito:</p>
1209+
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>1,&quot;A B&quot;
1210+
</pre></div>
1211+
</div>
1212+
</aside>
1213+
<aside class="footnote brackets" id="id17" role="note">
1214+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id5">3</a><span class="fn-bracket">]</span></span>
11931215
<p>Desgraciadamente, no se pueden incluir comentarios en los documentos
11941216
<abbr title="JavaScript Object Notation">JSON</abbr>, por lo que no podemos hacer estos puntualizaciones dentro del propio
11951217
texto.</p>
11961218
</aside>
1197-
<aside class="footnote brackets" id="id16" role="note">
1198-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id5">3</a><span class="fn-bracket">]</span></span>
1219+
<aside class="footnote brackets" id="id18" role="note">
1220+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id6">4</a><span class="fn-bracket">]</span></span>
11991221
<p>Por esta razón, las claves siempre se muestran entrecomilladas. Esto es
12001222
una diferencia con <a class="reference external" href="https://es.wikipedia.org/wiki/JavaScript">Javascript</a> en que se permite no entgrecomillar las claves.</p>
12011223
</aside>
1202-
<aside class="footnote brackets" id="id17" role="note">
1203-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id7">4</a><span class="fn-bracket">]</span></span>
1224+
<aside class="footnote brackets" id="id19" role="note">
1225+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id8">5</a><span class="fn-bracket">]</span></span>
12041226
<p>Al menos en servicios web. La razón muy probablemente sea que el cliente
12051227
de las aplicaciones web es un navegador con <a class="reference external" href="https://es.wikipedia.org/wiki/JavaScript">Javascript</a> para el cual el
12061228
soporte de <abbr title="JavaScript Object Notation">JSON</abbr> es nativo.</p>
12071229
</aside>
1208-
<aside class="footnote brackets" id="id18" role="note">
1209-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id9">5</a><span class="fn-bracket">]</span></span>
1230+
<aside class="footnote brackets" id="id20" role="note">
1231+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id10">6</a><span class="fn-bracket">]</span></span>
12101232
<p>En esta notación son válidas todas las expresiones que ya vimos para
12111233
<abbr title="JavaScript Object Notation">JSON</abbr>.</p>
12121234
</aside>
1213-
<aside class="footnote brackets" id="id19" role="note">
1214-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id10">6</a><span class="fn-bracket">]</span></span>
1235+
<aside class="footnote brackets" id="id21" role="note">
1236+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id11">7</a><span class="fn-bracket">]</span></span>
12151237
<p>«No es un número» es la forma de representar en algunos lenguajes de
12161238
programación que una operación es imposible de calcular es imposible. Por
12171239
ejemplo, la operación <span class="math notranslate nohighlight">\(0/0\)</span>.</p>
12181240
</aside>
1219-
<aside class="footnote brackets" id="id20" role="note">
1220-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id11">7</a><span class="fn-bracket">]</span></span>
1241+
<aside class="footnote brackets" id="id22" role="note">
1242+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id12">8</a><span class="fn-bracket">]</span></span>
12211243
<p>En realidad, no es necesario que el tipo sea una cadena (véase <a class="reference internal" href="#yaml-binary"><span class="std std-ref">tipo
12221244
binario</span></a>, por ejemplo), pero lo habitual es que un valor que
12231245
ocupe más de una línea sea una cadena.</p>
12241246
</aside>
1225-
<aside class="footnote brackets" id="id21" role="note">
1226-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id12">8</a><span class="fn-bracket">]</span></span>
1247+
<aside class="footnote brackets" id="id23" role="note">
1248+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id13">9</a><span class="fn-bracket">]</span></span>
12271249
<p>Aunque no es necesario, se recomienda que estos caracteres de espaciado
12281250
sean espacios.</p>
12291251
</aside>
1230-
<aside class="footnote brackets" id="id22" role="note">
1231-
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id13">9</a><span class="fn-bracket">]</span></span>
1252+
<aside class="footnote brackets" id="id24" role="note">
1253+
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id14">10</a><span class="fn-bracket">]</span></span>
12321254
<p>Como no tendremos ningún procesador que soporte tal etiqueta no podremos
12331255
hacer la comprobación. Sin embargo, aunque no tenga interés práctico, podemos
12341256
usar la directiva <code class="docutils literal notranslate"><span class="pre">%TAG</span></code> con la <abbr title="Uniform Resource Locator">URN</abbr> asociada al esquema de <abbr title="YAML Ain't Markup Language">YAML</abbr> para

0 commit comments

Comments
 (0)