【发布时间】:2016-08-03 21:36:31
【问题描述】:
现在我将文件作为字符串接收并将它们格式化为 json。该文件包含我想转义的 \r、\n 字符,但文件中的 json 对象已经转义了这些非法字符,例如 \\r 和 \\n。所以现在我想用 \\r \\n 替换 \r \n 字符,前提是它前面没有一个 \
我在下面尝试过这个..但我不确定为什么它不起作用
re.sub(r'[^\][\n]', r'\\\\n', s)
任何建议都将不胜感激!
【问题讨论】:
现在我将文件作为字符串接收并将它们格式化为 json。该文件包含我想转义的 \r、\n 字符,但文件中的 json 对象已经转义了这些非法字符,例如 \\r 和 \\n。所以现在我想用 \\r \\n 替换 \r \n 字符,前提是它前面没有一个 \
我在下面尝试过这个..但我不确定为什么它不起作用
re.sub(r'[^\][\n]', r'\\\\n', s)
任何建议都将不胜感激!
【问题讨论】:
你可以使用 RegEx 来做到这一点:
import re
data = 'Hello\r\nWorld\\r\\n'
print(data)
print('-'*20)
data = re.sub(r'([^\\])\r', '\\1\\\\r', data)
data = re.sub(r'([^\\])\n', '\\1\\\\n', data)
print(data)
输出:
Hello
World\r\n
--------------------
Hello\r\nWorld\r\n
或者,稍微不同的方法是这样做:
data = 'Hello\r\nWorld\\r\\n'
print(data)
print('-'*20)
data = data.replace('\r', '\\r')
data = data.replace('\n', '\\n')
print(data)
输出:
Hello
World\r\n
--------------------
Hello\r\nWorld\r\n
【讨论】:
\\\r == <backslash><CR> 序列了