[R-br] String com um espaço que não é espaço

Benilton Carvalho beniltoncarvalho em gmail.com
Segunda Março 5 13:34:05 BRT 2012


Resultado do emacs:

        character:   (160, #o240, #xa0)
preferred charset: unicode (Unicode (ISO10646))
       code point: 0xA0
           syntax: . 	which means: punctuation
         category: .:Base, b:Arabic, j:Japanese, l:Latin
      buffer code: #xC2 #xA0
        file code: #xC2 #xA0 (encoded by coding system utf-8-unix)
          display: by this font (glyph code)
    nil:-apple-Courier-medium-normal-normal-*-18-*-*-*-m-0-iso10646-1 (#xA6)
   hardcoded face: nobreak-space

Character code properties: customize what to show
  name: NO-BREAK SPACE
  old-name: NON-BREAKING SPACE
  general-category: Zs (Separator, Space)
  decomposition: (noBreak 32) (noBreak ' ')


dai', no meu teste:

txt = paste("meu" , "texto", sep=loucura)
gsub("\\xA0", "\\+", txt)

com o resultado:

[1] "meu+texto"


b

2012/3/5 Lucas Barbosa <lucasbcr em gmail.com>:
>> gsub("[[:blank:]]+", "\\+", cidade)
> [1] "Águas Lindas+de+Goiás"
>
>> save(loucura, file='caracter_loucura.RData')
>
> Já estou quase desistindo. Pra quem tiver curiosidade segue anexo o arquivo
> caracter_loucura.RData
>
> Em 5 de março de 2012 12:35, Benilton Carvalho <beniltoncarvalho em gmail.com>
> escreveu:
>
>> Hmmm...
>>
>> Eu ainda tentaria algo como:
>>
>> gsub("[[:blank:]]+", "\\+", cidade)
>>
>> e, falhando tudo, abriria o arquivo de origem dos dados no meu bom e
>> velho Emacs e usaria describe-char para tentar entender a fonte do
>> probelma.
>>
>> b
>>
>> 2012/3/5 Lucas Barbosa <lucasbcr em gmail.com>:
>> >> Encoding(cidade)
>> > [1] "unknown"
>> >> cidade <- enc2native(cidade)
>> >>
>> >> cidade
>> >
>> > [1] "Águas Lindas de Goiás"
>> >>
>> >> Encoding(cidade)
>> > [1] "unknown"
>> >
>> >>
>> >> gsub( "[ \t\n\r\f\v]" , "\\+", cidade)
>> > [1] "Águas Lindas+de+Goiás"
>> >>
>> >> gsub( "[ \t\n\r\f\v]" , "\\+", cidade, useBytes=T)
>> > [1] "Águas Lindas+de+Goiás"
>> >
>> > O pior é que eu consigo imprimir o "loucura" na tela, copiar e colar:
>> >
>> >> loucura
>> > [1] " "     # " " copiado
>> >> gsub( " " , "\\+", cidade) # " " colado
>> > [1] "Águas+Lindas de Goiás"
>> >
>> > Existe alguma função que receba um caracter e retorne o código unicode
>> > dele
>> > ou algo assim?
>> >
>> >
>> > Em 5 de março de 2012 11:10, Benilton Carvalho
>> > <beniltoncarvalho em gmail.com>
>> > escreveu:
>> >
>> >> Parece algo de codificacao de caracteres... Qual o resultado de:
>> >>
>> >> Encoding(cidade)
>> >>
>> >> ?
>> >>
>> >> E se vc converter 'cidade'?
>> >>
>> >> cidade <- enc2native(cidade)
>> >>
>> >> e tentar a partir dai'?
>> >>
>> >> Ou, possivelmente, usar gsub() com useBytes=TRUE ?
>> >>
>> >> b
>> >>
>> >> 2012/3/5 Lucas Barbosa <lucasbcr em gmail.com>:
>> >> > Bom dia pessoal,
>> >> >
>> >> > Estou escrevendo um código para calcular a distancia entre cidades
>> >> > brasileiras com o gmaps. Para construir os links eu preciso trocar os
>> >> > espaços por "+" nos nomes das cidades.
>> >> > Nos meus dados (uma lista de cidades) algumas strings contém um
>> >> > caracter
>> >> > que
>> >> > parece um espaço em branco, mas não se comporta como tal:
>> >> >
>> >> >> cidades[[47]][[3]]
>> >> > [1] "Águas Lindas de Goiás"
>> >> >>
>> >> >> cidade <- cidades[[47]][[3]]
>> >> >>
>> >> >> strsplit( cidade ,"[ \t\n\r\f\v]")
>> >> > [[1]]
>> >> > [1] "Águas Lindas" "de"           "Goiás"
>> >> >>
>> >> >> gsub( "[ \t\n\r\f\v]" , "\\+", cidade)
>> >> > [1] "Águas Lindas+de+Goiás"
>> >> >>
>> >> >> loucura <- substr(cidade, 6, 6)
>> >> >>
>> >> >> gsub( loucura , "\\+", cidade)
>> >> > [1] "Águas+Lindas de Goiás"
>> >> >>
>> >> >> gsub( sprintf("[%s \t\n\r\f\v]", loucura) , "\\+", cidade)
>> >> > [1] "Águas+Lindas+de+Goiás"
>> >> >
>> >> > Eu consegui resolver o problema (trocar espaços por "+"), mas
>> >> > gostaria
>> >> > de
>> >> > escrever meu código sem extrair o caracter "loucura" com a substr().
>> >> >
>> >> > Se não é [ \t\n\r\f\v], o que é? Alguém tem uma dica?
>> >> >
>> >> > Abs.,
>> >> > Lucas Cusinato
>> >> >
>> >> > _______________________________________________
>> >> > R-br mailing list
>> >> > R-br em listas.c3sl.ufpr.br
>> >> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> >> > código
>> >> > mínimo reproduzível.
>> >> _______________________________________________
>> >> R-br mailing list
>> >> R-br em listas.c3sl.ufpr.br
>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> >> código mínimo reproduzível.
>> >
>> >
>> >
>> > _______________________________________________
>> > R-br mailing list
>> > R-br em listas.c3sl.ufpr.br
>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> > código
>> > mínimo reproduzível.
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código
> mínimo reproduzível.


Mais detalhes sobre a lista de discussão R-br