python - 如何正确打印出带有 unicode 转义字符的字符串
问题描述
例如,我正在从包含嵌入式 unicode 转义序列的文件中读取字符串
\u00e9
。当我使用 打印文字字符串print()
时,编码通过 print 转换为正确的字符,但是如果我从 stdin 获取字符串并将它们打印出来, print 不会将转义序列转换为 unicode 字符。
例如,当我使用:
print ("Le Condamn\u00e9 \u00e0 mort")
但是, python 正确打印Le Condamné à mort
,如果我从 stdin 得到相同的字符串,我得到:Le Condamn\u00e9 \u00e0 mort
有谁知道我如何让 python 将转义序列转换为正确的 unicode 字符?print
另外,当你给它一个字符串文字而不是一个字符串变量时,为什么会有不同的行为呢?
解决方案
\u00e0
被存储为 python 的 Unicode 数字,因此它被打印为“à” 。当您从另一个文件中获取它时,它完全是字符串形式,这意味着它随后被存储为'\\u00e0'
每个字符都是字符串的地方。解决此问题的方法是确定'\\u00e0'
列表中的位置,然后将其替换为'\u00e0'
这是一些将'\\u00e0'
字符串中的转换为它应该是的字符的代码。
def special_char_fix(string):
string = list(string)
for pl, char in enumerate(string):
if char == '\\':
val = ''.join([string[pl + k + 2] for k in range(4)])
for k in range(5):
string.pop(pl)
string[pl] = str(chr(int(val, 16)))
return ''.join(string)
推荐阅读
- python - 在 Python 中,如何用字符串切片?
- azure-powershell - 在 Azure powershell 中获取 webapp 的受限 ip
- r - 匹配数据框和向量的行时如何提取列索引
- google-cloud-platform - 无法 VNC 到 GCP Linux 虚拟机
- javascript - scrollIntoView() 在 IOS Safari 和 chrome 上不起作用?
- checkbox - 我不需要复选框的可点击标签
- c# - C# - 发生异常时,希望保留参数对象的原始状态以及最近的任何更改
- javascript - How to pass a javascript return value to spring path variable
- javascript - React Native Hooks:无法在 useEffect 函数的 return() 中显示值
- pandas - 使用 beautifulsoup 将 selenium html 表放入 pandas 数据框