相关疑难解决方法(0)

在Python3中评估字符串中的UTF-8文字转义序列

我有一个形式的字符串:

s = '\\xe2\\x99\\xac'
Run Code Online (Sandbox Code Playgroud)

我想通过评估转义序列将其转换为字符..但是,我尝试的所有内容都会导致错误或打印出垃圾.如何强制Python将转义序列转换为文字unicode字符?

我在其他地方读到的内容表明以下代码行应该按照我的意愿行事,但它会导致UnicodeEncodeError.

print(bytes(s, 'utf-8').decode('unicode-escape'))
Run Code Online (Sandbox Code Playgroud)

我也试过以下,结果相同:

import codecs
print(codecs.getdecoder('unicode_escape')(s)[0])
Run Code Online (Sandbox Code Playgroud)

这两种方法都产生字符串'âx99',随后该打印无法处理.

如果它产生任何差异,则从UTF-8编码的文件中读取字符串,并且最终在处理之后将其输出到不同的UTF-8编码文件.

python string unicode utf-8 python-3.x

6
推荐指数
1
解决办法
3622
查看次数

如何使用\ u转义码编码Python 3字符串?

在Python 3中,假设我有

>>> thai_string = '???'
Run Code Online (Sandbox Code Playgroud)

使用encode给出

>>> thai_string.encode('utf-8')
b'\xe0\xb8\xaa\xe0\xb8\xb5'
Run Code Online (Sandbox Code Playgroud)

我的问题:如何使用而不是使用encode()返回bytes序列?我怎么能回到Python 3 类型呢?\u\xdecodestr

我尝试使用ascii内置,这给了

>>> ascii(thai_string)
"'\\u0e2a\\u0e35'"
Run Code Online (Sandbox Code Playgroud)

但这似乎不太正确,因为我无法解码它以获得thai_string.

Python文档告诉我

  • \xhh转义字符与十六进制值hh,而
  • \uxxxx 使用16位十六进制值转义字符 xxxx

文档说\u只用在字符串文字中,但我不确定这意味着什么.这是否暗示我的问题有一个有缺陷的前提?

python unicode unicode-escapes python-3.x

6
推荐指数
1
解决办法
3213
查看次数

标签 统计

python ×2

python-3.x ×2

unicode ×2

string ×1

unicode-escapes ×1

utf-8 ×1