将中文字符转换为XML / HTML样式的数字实体并转换为Unicode UTF-8?

时间:2014-07-09 06:27:23

标签: python html xml regex character-encoding

我有英文单词和汉字的混合,我想将文本转换成英文单词和汉字的XML / HTML样式数字实体的混合。

例如,以下英文单词,数字和中文字符的混合

Title: 目录.doc
Level: 1
PageNumber: 1
Begin
Title: 1 C语言概述
Level: 1
PageNumber: 13
BeginTitle: 1.1 C语言的发展过程
Level: 2
PageNumber: 13
Begin
Title: 1.2 当代最优秀的程序设计语言

将变为以下内容,中文字符由其XML / HTML样式的数字实体替换:

Title: 目录.doc
Level: 1
PageNumber: 1
Begin
Title: 1 C语言概述
Level: 1
PageNumber: 13
Begin
Title: 1.1 C语言的发展过程
Level: 2
PageNumber: 13
Begin
Title: 1.2 当代最优秀的程序设计语言

我想知道我是否可以用Python编程?

还可以编程将中文字符转换为Unicode UTF-8代码吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果s是unicode字符串,s.encode('ascii', 'xmlcharrefreplace')

在python 2中,您可以尝试s.decode('utf_8').encode('ascii', 'xmlcharrefreplace')

这适用于python 3。

s = '''
Title: 目录.doc
Level: 1
PageNumber: 1
Begin
Title: 1 C语言概述
Level: 1
PageNumber: 13
BeginTitle: 1.1 C语言的发展过程
Level: 2
PageNumber: 13
Begin
Title: 1.2 当代最优秀的程序设计语言
'''

print(s.encode('ascii', 'xmlcharrefreplace').decode('utf_8'))

或者,您可以编写自己的代码

res = []

for b in s:
    o = ord(b)
    if o > 255:
        res.append('&#{};'.format(o))
    else:
        res.append(b)

res_string = ''.join(res)

print(res_string)

两个输出:

Title: 目录.doc
Level: 1
PageNumber: 1
Begin
Title: 1 C语言概述
Level: 1
PageNumber: 13
BeginTitle: 1.1 C语言的发展过程
Level: 2
PageNumber: 13
Begin
Title: 1.2 当代最优秀的程序设计语言

您可以使用ord()函数

获取unicode代码
c = '录'
code = ord(c)
print(code, hex(code))

输出:

24405 0x5f55