Python中如何让构造的Unicode转义字符串与实际Unicode字符相等
解决var1与var2相等的问题
问题核心:你当前的var1是原始字符串(raw string),其中的\U000是字面字符,未被Python解析为Unicode转义序列;而var2是直接解析后的Unicode emoji字符,因此两者不相等。
下面提供两种可行的修改方案,都能让var1被解析为对应emoji,从而与var2相等:
方案1:使用ast.literal_eval解析转义序列
#!/usr/bin/python3 # -*- coding: utf-8 -*- import re import ast var1 = '1F1EB 1F1F7' var1 = re.sub(r' ', r'\U000', var1) var1 = f'\\U000{var1}' # 不用原始字符串,保留转义序列的字面形式 var1 = ast.literal_eval(f'"{var1}"') # 解析字符串中的转义序列 var2 = '\U0001F1EB\U0001F1F7' if var1 == var2: print('true') print(type(var1)) print(var1) print(type(var2)) print(var2)
方案2:使用codecs.decode处理Unicode转义
#!/usr/bin/python3 # -*- coding: utf-8 -*- import re import codecs var1 = '1F1EB 1F1F7' var1 = re.sub(r' ', r'\U000', var1) var1 = f'\\U000{var1}' var1 = codecs.decode(var1, 'unicode_escape') # 专门解析Unicode转义序列 var2 = '\U0001F1EB\U0001F1F7' if var1 == var2: print('true') print(type(var1)) print(var1) print(type(var2)) print(var2)
两种方案执行后,都会输出你期望的结果:
true <class 'str'> 🇫🇷 <class 'str'> 🇫🇷
内容的提问来源于stack exchange,提问作者Randomize
相关产品推荐
相关产品推荐

