将字符串转换为 unicode 视图

Convert string to unicode view

我有一个字符串

s = "Санкт-Петербург"

我想将字符串转换为

\u0421\u0430\u043D\u043A\u0442-\u041F\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433

我的代码

x = "Санкт-Петербург"
y = str(x.encode('unicode-escape')) # I want y to be string
print(y) # b'\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433'

摆脱 b'\ 的最佳方法是什么?

使用一片[2:-1],这将切掉b'和结尾的',然后用''替换所有的'\'。方法如下:

x = "Санкт-Петербург"
y = str(x.encode('unicode-escape'))
print(y[2:-1].replace('\\', '\'))

输出:

\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433

您需要做的就是使用 replace() 方法将 4 个反斜杠 替换为 2 个反斜杠 。之后,您可以使用 strip() 方法去掉开头的 b' 和结尾的 '

以下是您可以继续的方法:

y = y.replace('\\', '\')    # Replace backslashes
y = y.strip("b'")              # Strip the unnecessary parts

print(y)                       # Print out the result

输出


\u0421\u0430\u043D\u043A\u0442-\u041F\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433

PS: strip("b'") 也去掉了单引号的字符串结尾。

编辑

正如@Aplet123 所指出的,strip("b'") 可能会导致任何在开头或结尾包含 ASCII b' 的字符串出现问题。因此,可以使用字符串切片代替 strip()。您需要做的就是将行 y = y.strip("b'") 替换为:

y = y[2:][:-1]

在这里,2: 将去掉开头的 b':-1 将去掉结尾的 '