如何将含Unicode转义的字符串转换为十进制拼接形式?
解决Unicode转义字符串转指定格式的问题
需求分析
你需要将包含Unicode转义序列(如\u0006)的字符串,转换为保留转义序列对应十进制数字、同时保留原字母数字字符、剔除其他符号的格式,最终得到类似"631588D402"的结果。
解决方案(Python实现)
可以通过正则匹配Unicode转义序列,提取关键部分转换为十进制,再过滤掉非字母数字字符来实现:
import re # 原始输入字符串(使用原始字符串避免转义冲突) input_str = r"\u0006;\u0003\u001588D402" # 替换Unicode转义序列为对应十进制数字字符串 def unicode_to_decimal(match): # 提取转义序列后两位十六进制数,转为十进制 hex_segment = match.group(1)[2:] return str(int(hex_segment, 16)) # 匹配所有\uXXXX格式的转义序列并替换 processed_str = re.sub(r'\\u([0-9a-fA-F]{4})', unicode_to_decimal, input_str) # 过滤掉非字母数字的字符 final_result = ''.join([char for char in processed_str if char.isalnum()]) # 输出结果 print(f'"{final_result}"')
代码说明
- 正则表达式
r'\\u([0-9a-fA-F]{4})'专门匹配\uXXXX格式的Unicode转义序列,提取其中的四位十六进制数。 - 提取四位十六进制数的后两位(如
\u0015取15),转为十进制数字后转成字符串。 - 最后过滤掉所有非字母数字的字符(比如示例中的
;),拼接得到最终结果。
运行上述代码后,会输出你预期的:
"631588D402"
内容的提问来源于stack exchange,提问作者Escris
相关产品推荐
相关产品推荐

