首页 > 解决方案 > 如何在保留'\n'的同时替换'\'?

问题描述

我有这个数据:

bytesObj = b'{"a":1,"b":"test","c":"\xfc\\\\\xba\xda\\n123"}'
tmpStr = bytesObj.decode('gb18030','ignore')
tmpStr
{"a":1,"b":"test","c":"黒\\黑\\n123"}

我有什么尝试:

import re
b = re.sub(r'\\', '', tmpStr)

然后我得到:

{"a":1,"b":"test","c":"黒黑n123"}

我的预期输出:

{"a":1,"b":"test","c":"黒黑\n123"}

你能帮我吗?

标签: pythonpython-3.x

解决方案


n您可以通过排除after来做到这一点\

b = re.sub(r'\\(?!n)', '', tmpStr)

这导致:

{"a":1,"b":"test","c":"黒黑\n123"}

您还可以通过使用|管道符号来使用字符集合。在下面\n\x被忽略。

b = re.sub(r'\\(?!n|x)', '', tmpStr)

附录

(?!     look ahead operator

推荐阅读