Метод rPython python.get возвращает странную кодировку
Я пытаюсь использовать пакет rPython, чтобы передать некоторые аргументы в код Python и получить результаты обратно. Но по какой-то причине я получаю странное кодирование из моего кода на Python. Может быть, у кого-то есть подсказки, чтобы указать мне.
Вот мой простой код для тестирования:
require(rPython)
#pass the test word 'audiention' (in ukrainian)
word<-"аудієнція"
python.assign("input", word)
python.exec("input = input.encode('utf-8')")
python.exec("print input") #the output in console is correct at this step: аудієнція
x<-python.get("input")
cat(x) # the output is: 0C4VT=FVO
У кого-нибудь есть предложения, почему вывод python.get закодирован странно?
Мой вывод Sys.getlocale():
Sys.getlocale()
[1] "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=uk_UA.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=uk_UA.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=uk_UA.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=uk_UA.UTF-8;LC_IDENTIFICATION=C"
Заранее спасибо за любые подсказки!
1 ответ
Недавно я создал новый пакет на основе исходного кода rPython под названием SnakeCharmR, который решает эту и другие проблемы, с которыми столкнулся rPython.
Быстрое сравнение:
> library(SnakeCharmR)
> py.assign("a", "'")
> py.get("a")
[1] "'"
> py.assign("a", "áéíóú")
> py.get("a")
[1] "áéíóú"
> library(rPython)
> python.assign("a", "'")
File "<string>", line 2
a =' [ "'" ] '
^
SyntaxError: EOL while scanning string literal
> python.assign("a", "áéíóú")
> python.get("a")
[1] "\xe1\xe9\xed\xf3\xfa"
Вы можете установить SnakeCharmR следующим образом:
> library(devtools)
> install_github("asieira/SnakeCharmR")
Надеюсь это поможет.