字符串格式转换

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
头像
tang.zhe
帖子: 1505
注册时间: 2010-07-15 13:31

Re: 字符串格式转换

#16

帖子 tang.zhe » 2016-12-20 16:40

代码: 全选

tz@utz:~$  echo "\u5317\u4eacabc" | perl -MEncode -pe  's/\\u([0-9a-fA-F]{4})/encode("utf8", pack("U", hex($1)))/eg'
北京abc
tz@utz:~$ 
哪里有北京二字,怎么就替换了呢?一头雾水。
关闭后对系统没影响吧?
d313206775
帖子: 15
注册时间: 2016-12-12 14:30
系统: ubuntu 14.04

Re: 字符串格式转换

#17

帖子 d313206775 » 2016-12-20 16:46

tang.zhe,
在终端输入 echo "\u5317\u4eacabc" | perl -MEncode -pe 's/\\u([0-9a-fA-F]{4})/encode("utf8", pack("U", hex($1)))/eg'
d313206775
帖子: 15
注册时间: 2016-12-12 14:30
系统: ubuntu 14.04

Re: 字符串格式转换

#18

帖子 d313206775 » 2016-12-21 13:25

我的问题还没有解决,哪位大神救救我 :Cry
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 字符串格式转换

#19

帖子 oneleaf » 2016-12-21 15:37

python2默认是ascii编码输出文件的,所以对于Unicode会按照 \uXXXXX 的格式写入。

如果希望直接输出为中文,需要如下写入文件:

代码: 全选

import codecs
f = codecs.open('xxx.log','a','utf-8')
d313206775
帖子: 15
注册时间: 2016-12-12 14:30
系统: ubuntu 14.04

Re: 字符串格式转换

#20

帖子 d313206775 » 2016-12-23 14:28

此楼结贴,感谢大家的帮助。
现进行总结:
是我自己想当然地看错了我获取到的字符串。
我真实获取到的字符串类似于:

代码: 全选

a = 'Hour China \\u795e\\u5947\\u7684\\u4e2d\\u56fd'
这样,需进行以下操作:

代码: 全选

temp = a.replace('\u','u')
            mystr = temp.decode('unicode-escape')
如果是以下类型的字符串:

代码: 全选

 a =‘Hour China \u795e\u5947\u7684\u4e2d\u56fd’
则只需要做

代码: 全选

decode('unicode-escape') 
转换即可。
回复