我想做以下事情: 1)序列化我的班级 2)还手动编辑序列化转储文件,以删除我认为不必要的类的某些对象。
我目前正在使用带有simplejson的python。如您所知,simplejson将所有字符转换为unicde。因此,当我使用simplejson转储特定对象时,unicode字符变为类似于“\ u00bd”的好东西。
我有兴趣手动编辑simplejson文件以方便使用。这里的任何人都知道为我做的工作吗?
我对此序列化格式的要求: 1)易于使用(只需转储和加载 - 完成) 2)允许我手动编辑它们而不会有太多麻烦。 3)能够显示汉字
我使用vim。有没有人知道在vim中将“\ u00bd”转换为好的方法?
答案 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
中的文件。