{"id":122,"date":"2016-11-27T20:33:08","date_gmt":"2016-11-27T20:33:08","guid":{"rendered":"http:\/\/python.wp.w3.pt\/?p=122"},"modified":"2016-11-27T20:38:35","modified_gmt":"2016-11-27T20:38:35","slug":"ficheiros-csv","status":"publish","type":"post","link":"http:\/\/python.w3.pt\/?p=122","title":{"rendered":"Ficheiros csv"},"content":{"rendered":"<p>O c\u00f3digo seguinte l\u00ea um ficheiro CSV e imprime cada campo numa linha<\/p>\n<pre>\r\n#!\/usr\/bin\/python\r\nimport re\r\n\r\nwith open(\"b.csv\") as f:\r\n        linhas = f.readlines()\r\n\r\nregex = re.compile(r\"^\\xef\\xbb\\xbf\")\r\nlinhas = list(map(lambda x: regex.sub(\"\", x).rstrip(), linhas))\r\n\r\nfor lin in linhas:\r\n        campos = lin.split('\",\"')\r\n        campos[0] = campos[0][1:]\r\n        tam = len(campos)\r\n        tam2 = len(campos[tam-1])\r\n        campos[tam-1] = campos[tam-1][:tam2-1]\r\n        for i in campos:\r\n                print i\r\n\r\n<\/pre>\n<p>Tal como no <a href=\"http:\/\/python.w3.pt\/?p=110\">artigo anterior<\/a>, remove o <a href=\"https:\/\/en.wikipedia.org\/wiki\/Byte_order_mark\">BOM<\/a> do in\u00edcio das linhas. Usualmente, o BOM est\u00e1 s\u00f3 na primeira linha, mas no caso de se concatenarem ficheiros, pode aparecer em v\u00e1rias linhas do ficheiro. Remove tamb\u00e9m o \\r\\n do fim de cada linha do ficheiro.<\/p>\n<p>Depois, parte cada linha pelo separador de campos &#8220;,&#8221;. Por fim, remove as aspas do in\u00edcio do primeiro campo e do fim do \u00faltimo campo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O c\u00f3digo seguinte l\u00ea um ficheiro CSV e imprime cada campo numa linha #!\/usr\/bin\/python import re with open(&#8220;b.csv&#8221;) as f: linhas = f.readlines() regex = re.compile(r&#8221;^\\xef\\xbb\\xbf&#8221;) linhas = list(map(lambda x: regex.sub(&#8220;&#8221;, x).rstrip(), linhas)) for lin in linhas: campos = lin.split(&#8216;&#8221;,&#8221;&#8216;) campos[0] = campos[0][1:] tam = len(campos) tam2 = len(campos[tam-1]) campos[tam-1] = campos[tam-1][:tam2-1] for i in &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/python.w3.pt\/?p=122\" class=\"more-link\">Continuar a ler <span class=\"screen-reader-text\">&#8220;Ficheiros csv&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/122"}],"collection":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=122"}],"version-history":[{"count":6,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions"}],"predecessor-version":[{"id":128,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions\/128"}],"wp:attachment":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}