python 3.9 随机生成 以UTF-8 编码 的随机中文
理论实践
因为python3的默认编码为UTF-8,我们将‘浪’的utf8'\u6d6a'进行打印测试
print('\u6d6a')
>>浪
中文匹配范围有两种 [\u4e00-\u9fa5]和[\u2E80-\u9FFF],后者包括了日韩地区的汉字
由于utf采用16进制,则需要进行一个进制的变换,我的思路是将16进制转为10进制,采用randint对10进制数进行选取,在转回16进制,加上标识符’\u'生成汉字
我们采用第二种规则,需将2E80,9FFF进行转换
a=int('2E80',16)
print(a)
b=int('9FFF',16)
print(b)
》》11904
40959
结果显现在11904~40959之间为汉字编码
a=randint(11904,40959)
定义一个标识符’\u'
listutf=['\\','u']
采用列表的原因有二
一是直接定义'\u'会报出
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape
即utf编码不能为空
而列表可以分开定义,并且在后续的使用append更加直接
b=str(hex(a))
listutf.append(b)
c=''.join(listutf)
print (c)
结果
\u0x5930
没有提供我们所需的中文字符,因为前面多出了‘0x'的16进制标识符
采用字符串切片
b=str(hex(a))
b=b[2:]
结果
\u339e
使用json模块去储存
import json
with open('data.json', 'w') as f:
json.dump(c, f)
with open('data.json','r')as TxtFile:
c = json.load(TxtFile)
print (c)
输出json为
"\\u5a9f"
多了一个‘\‘符号