Python:在编辑器中正确获取\\ u00bd

时间:2010-03-08 08:37:52

标签: python vim

我想做以下事情: 1)序列化我的班级 2)还手动编辑序列化转储文件,以删除我认为不必要的类的某些对象。

我目前正在使用带有simplejson的python。如您所知,simplejson将所有字符转换为unicde。因此,当我使用simplejson转储特定对象时,unicode字符变为类似于“\ u00bd”的好东西。

我有兴趣手动编辑simplejson文件以方便使用。这里的任何人都知道为我做的工作吗?

我对此序列化格式的要求: 1)易于使用(只需转储和加载 - 完成) 2)允许我手动编辑它们而不会有太多麻烦。 3)能够显示汉字

我使用vim。有没有人知道在vim中将“\ u00bd”转换为好的方法?

2 个答案:

答案 0 :(得分:1)

我对simplejson或问题的序列化部分一无所知,但你问过在Vim中将“\ u00bd”转换为好。以下是使用unicode的一些vim技巧:

  • 您需要在vim中设置正确的编码,请参阅:

    :help 'encoding'
    :help 'fileencoding'
    
  • 按编号输入unicode字符只是进入插入模式,按Ctrl-V然后键入u后跟四位数字(或U后跟8)的情况-数字)。参见:

    :help i_CTRL-V_digit
    
  • 还要记住,为了让字符在Vim中正确显示,您需要一个包含该字符的固定宽度字体。它似乎是Envy Code R中的宽阔空间,以及Lucida Console,Consolas和Courier New中的各种盒子。

  • 要使用unicode字符\uXXXX替换XXXX(其中X是任何十六进制数字),请在正常模式下键入此值(其中<ENTER>表示按 ENTER 键,不要按字面输入):

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

但请注意,u00bd似乎是unicode字符½(如果字符在屏幕上无法正确显示,则为1/2),而不是您提到的好字符(我认为是u597D)。见this unicode table。启动vim并输入这些字符(按住<Ctrl-V>,按CTRL,发布V然后发布V)即可生成CTRL

    i<Ctrl-V>u00bd

假设您的字体支持该字符,您应该会看到一个看起来像1/2的小字符。

答案 1 :(得分:0)

如果您希望json / simplejson使用Unicode转义生成unicode输出而不是str输出,那么您需要将ensure_ascii=False传递给dump() / dumps() ,然后在保存之前进行编码或使用codecs中的文件。