有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与Python处理字符串文字中的转义序列相同的方式处理转义序列.
例如,假设myString定义为:
>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
Run Code Online (Sandbox Code Playgroud)
我想要一个函数(我会称之为process)这样做:
>>> print(process(myString))
spam
eggs
Run Code Online (Sandbox Code Playgroud)
重要的是该函数可以处理Python中的所有转义序列(在上面链接的表中列出).
Python有功能吗?
我试图转换一个字符串,其中包含需要多个十六进制值的字符,如下所示:
'Mahou Shoujo Madoka\xe2\x98\x85Magica'
Run Code Online (Sandbox Code Playgroud)
到它的unicode表示:
'Mahou Shoujo Madoka?Magica'
Run Code Online (Sandbox Code Playgroud)
当我打印字符串时,它会尝试分别评估每个十六进制值,所以默认情况下我得到这个:
x = 'Mahou Shoujo Madoka\xe2\x98\x85Magica'
print(x)
Mahou Shoujo MadokaâMagica
Run Code Online (Sandbox Code Playgroud)
所以我尝试了其他一些StackOverflow答案,例如在Python 3中将字符串转换为字节的最佳方法?:
x = 'Mahou Shoujo Madoka\xe2\x98\x85Magica'
z = x.encode('utf-8')
print('z:', z)
y = z.decode('utf-8')
print('y:', y)
z: b'Mahou Shoujo Madoka\xc3\xa2\xc2\x98\xc2\x85Magica'
y: Mahou Shoujo MadokaâMagica
Run Code Online (Sandbox Code Playgroud)
Python:将Unicode-Hex-String转换为Unicode:
z = 'Mahou Shoujo Madoka\xe2\x98\x85Magica'
x = binascii.unhexlify(binascii.hexlify(z.encode('utf-8'))).decode('utf-8')
print('x:', x)
x: Mahou Shoujo MadokaâMagica
Run Code Online (Sandbox Code Playgroud)
还有一些,但没有一个有效.我发现的大部分结果都是有双反斜杠问题的人,但没有一个人有我的确切问题.
我注意到当我执行str.encode时,它似乎在二进制中添加了一些额外的值(例如第一次尝试中z和x之间的差异),我不太清楚为什么.
所以我尝试在二进制文件中手动输入字符串的字符:
x = b'Mahou Shoujo Madoka\xe2\x98\x85Magica'
x.decode('utf-8')
'Mahou Shoujo Madoka?Magica'
Run Code Online (Sandbox Code Playgroud)
它起作用了.但是除了输入外,我找不到从字符串转换为字符串的方法.我哪里错了?