首页 > 解决方案 > 删除特殊代码转换为正常 (`%u021`, `%u0219`)

问题描述

我有这个值的变量: 'Strada Constitu%u021Biei, Foc%u0219ani 620123, Romania'

我需要删除此代码%u021%u0219.. 我尝试了互联网上的所有教程,但没有成功。

我如何将此字符串转换为普通字符?

我需要这个输出:

'Strada Constitutiei, Focsani 620123, Romania'

标签: python

解决方案


我们需要在您的示例中替换的序列实际上是%u021Band %u0219。谷歌搜索这些,我们发现它们“几乎”是 unicode 转义序列。唯一的区别是,它们不是以反斜杠开头,而是以百分号开头。如果我们有正确的 unicode 序列,我们可以对其进行编码(将其转换为字节),然后使用编码“unicode-escape”再次对其进行解码。

因此,要转换您的输入,我们%首先替换所有符号,然后应用此方法:

def custom_decode(string):
    return (
       string
           .replace("%", "\\")  # "\\" here is double as it needs to be escaped
           .encode()
           .decode("unicode-escape")
    )

custom_decode("Strada Constitu%u021Biei, Foc%u0219ani 620123, Romania") 
# "Strada Constituției, Focșani 620123, Romania"

custom_decode这将我们方法的潜在输入限制为没有独立"%"字符的字符串,即不表示转义序列的 % 符号。

您可能想阅读一般的字符串编码,特别是在 python 中,以便更好地了解这里发生的事情。


推荐阅读