Python: правильно получить \ u00bd в редакторе - PullRequest
1 голос
/ 08 марта 2010

Я хотел бы сделать следующее: 1) Сериализуйте мой класс 2) Также вручную отредактируйте файл дампа сериализации, чтобы удалить некоторые объекты моего класса, которые я нахожу ненужными.

В настоящее время я использую python с simplejson. Как вы знаете, simplejson конвертирует все символы в unicde. В результате, когда я выгружаю определенный объект с помощью simplejson, символы юникода становятся чем-то вроде «\ u00bd» для 好.

Мне интересно вручную отредактировать файл simplejson для удобства. Кто-нибудь здесь знает, как мне это сделать?

Мои требования для этого формата сериализации: 1) Простота в использовании (просто сбросить и загрузить - готово) 2) Позволяет мне редактировать их вручную без особых хлопот. 3) Возможность отображать китайский символ

Я использую vim. Кто-нибудь знает способ конвертировать "\ u00bd" в im в vim?

Ответы [ 2 ]

1 голос
/ 08 марта 2010

Я ничего не знаю о simplejson или части вопроса о сериализации, но вы спрашивали о преобразовании "\ u00bd" в 好 в Vim. Вот несколько советов по работе с Unicode:

  • Вам понадобится правильная кодировка, настроенная в vim, см .:

    :help 'encoding'
    :help 'fileencoding'
    
  • Ввод символов Юникода по номеру - это просто случай перехода в режим вставки, нажатия Ctrl-V и ввода u с последующим четырехзначным числом (или U с последующим 8-значным числом) , См:

    :help i_CTRL-V_digit
    
  • Также имейте в виду, что для правильного отображения символа в Vim вам потребуется шрифт фиксированной ширины, содержащий этот символ. В Envy Code R он отображается как широкий пробел, а в Lucida Console, Consolas и Courier New - различные поля.

  • Чтобы заменить \uXXXX символом Unicode XXXX (где X - любая шестнадцатеричная цифра), введите его, когда в обычном режиме (где <ENTER> означает, что нажмите клавишу ENTER , don наберите буквально):

    :%s/\\u\x\{4\}/\=eval('"' . submatch(0) . '"')/g<ENTER>
    

Обратите внимание, что u00bd выглядит как символ Юникода & # x00bd; (1/2, если этот символ не отображается правильно на вашем экране), а не символ 好, который вы упомянули (я думаю, это u597D). См. эту таблицу Unicode . Запустите vim и введите эти символы (где <Ctrl-V> получается, удерживая CTRL, нажимая V, выпуская V и затем отпуская CTRL):

    i<Ctrl-V>u00bd

Вы должны увидеть маленький символ, похожий на 1/2, при условии, что ваш шрифт поддерживает этот символ.

0 голосов
/ 08 марта 2010

Если вы хотите, чтобы json / simplejson производил Unicode-вывод вместо str с выходом Unicode, вам нужно передать ensure_ascii=False в dump() / dumps(), затем либо кодировать перед сохранением, либо использовать файл-подобно от codecs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...