如何在 Python 中将“原始”字符串转换为“解码”字符串?

Posted

技术标签:

【中文标题】如何在 Python 中将“原始”字符串转换为“解码”字符串?【英文标题】:How to convert a 'raw' string into a 'decoded' string in Python? 【发布时间】:2021-05-21 04:31:57 【问题描述】:

我有以下字符串:

raw_text  = r"The Walt Disney Company, (2006\u2013present)"    
print(raw_text)
#result : The Walt Disney Company, (2006\u2013present)

我的问题是如何从 raw_text 中获取解码后的字符串“decoded_text”,以便获取

print(decoded_text)
#result : The Walt Disney Company, (2006-present)

除了这种琐碎的方法:

decoded_text = raw_text.replace("\u2013", "-")

事实上,我有很大的字符串,其中包含很多 \u-- 内容(如 \u2013、\u00c9 等)。所以我正在寻找一种方法以正确的方式一次转换所有这些。

【问题讨论】:

如果您的输入实际上来自 Python 原始字符串文字、r 前缀和所有内容,那么只需关闭 r。如果您的输入不是来自 Python 原始字符串文字,那么您所要求的操作可能有点错误。这个输入是从哪里来的? 我通过 BeautifulSoup 从网上获取了字符串。字符串中包含很多这样的东西。 转义规则因上下文而异,解析 Python 字符串文字转义的某些内容会为 JSON 字符串转义做错事。 【参考方案1】:

您可以使用内置的codecs 模块来完成此任务,如下所示

import codecs
raw_text  = r"The Walt Disney Company, (2006\u2013present)"
print(codecs.unicode_escape_decode(raw_text)[0])

输出:

The Walt Disney Company, (2006–present)

【讨论】:

以上是关于如何在 Python 中将“原始”字符串转换为“解码”字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将unsigned char类型的int字符串转换为int

如何在python中将一维值列表转换为0和1的二维网格[重复]

在 Python 中将二进制数组转换为十进制(相当于 R readBin?)

如何在python中将字符串转换为日期时间[重复]

如何在 Python 中将列表转换为带有空格的字符串?

如何在python中将异常转换为字符串[重复]