HeadlinesBriefing favicon HeadlinesBriefing.com

Analisando o Arquivo CSV dos Correios do Japão

Hacker News •
×

Faz tempo que lancei o posuto, um pacote que apresenta dados postais japoneses em um formato fácil de usar. Ele se baseia nos dados publicados pelo Japan Post, que é famoso por ser amplamente utilizado, mas difícil de analisar. Eu primeiro fiquei ciente dos dados postais quando ingresse meu código postal em um formulário online e ele foi automaticamente preenchido com o endereço "XXX-borough (except the following buildings)".

Eu não tinha ideia do que aquela parte entre parênteses se referia, então procurei uma fonte comum de dados postais, encontrei o CSV e encontrei o problema. Resulta que o arquivo CSV contém notas entre parênteses para qualquer pessoa lendo o arquivo CSV e faz referência à ordem das linhas. Isso causa problemas.

Os dados são principalmente úteis uma linha de cada vez, onde o conteúdo entre parênteses é sem sentido. Como o CSV é um formato delimitado por campos, não há necessidade de parênteses - você poderia apenas adicionar um campo de notas. Esta é apenas uma de muitas questões com ken_all.csv.

Você pode encontrar pessoas reclamando disso regularmente no Twitter, e até brevemente houve um blog apenas coletando posts de todo o mundo sobre ele. Um tweet particularmente divertido descreve pessoas que esperam que computadores se dobem à vontade humana sendo punidas no Inferno por terem que analisar ken_all.csv para sempre. O README do arquivo explica que linhas com campos excessivamente longos serão divididas em múltiplas linhas.

Especificamente, se o nome do bairro exceder 38 caracteres, ou se o campo de pronúncia em katakana de largura meia exceder 76 caracteres, a linha será dividida em duas linhas. O campo de bairro excessivamente longo continuará e todos os outros campos serão duplicados. Também deve ser notado que, embora os limites de comprimento sejam conforme declarados, a localização onde quebras de linha são inseridas em linhas longas parece aleatória, ocorrendo nem no limite de caracteres nem nos limites normais de palavras.

Vale a pena notar que nem todas as questões com o CSV são intrinsecamente técnicas; códigos postais são sempre complicados. O código postal com mais linhas no CSV - uma impressionante 66 - é 〒452-0961, que se refere à região Haruhi da cidade de Kiyosu no prefeito de Aichi. Isso tem tantas linhas porque cada bairro recebe uma linha separada.

Em contraste, a linha continuada mais longa, usando as regras de divisão de linha acima, é a entrada para 〒602-8368 ou 〒602-8374, ambas com oito linhas. Ambas estão em uma de poucas áreas em Kyoto que utiliza um sistema único, bizarre e baseado em interseções. Há códigos postais "catch-all" para muitas áreas, onde o bairro é dado como "except the following", e a única coisa a fazer é procurar por essa string exata e excluí-la.

Há uma variedade de strings similares, e é difícil saber se capturei todas. Um exemplo de outro comentário é 一円. Normalmente isso significaria "um iene", mas também significa "a área ao redor", e é uma nota no CSV que deve ser removida dos nomes de bairro, exceto...