Python比较"\n"转义字符和"\\n"的区别

4

好的,

我有两个字符串,分别是"Hello\nWorld!"Hello\\nWorld!。 我需要按照这种方式进行比较:\n\\n相等。

这不难。 我只需要使用 string1.replace("\n", "\\n")

但如果我必须正确处理所有转义字符,包括Unicode转义,那么手动替换就不是一个选项。

更新

示例案例:

我从文件中读取了Hello\nWorld!(在编辑器中打开文件时可以看到)。 Python将会看到Hello\\nWorld!

我想以它们相等的方式比较最后一个与第一个字符串。


这里的大背景是什么?你是在谈论打印字符串和它的repr()之间的区别吗?还是在讨论字节串('foo')和Unicode字符串(u'foo')之间的区别?或者这些字符串来自于已经进行了一些转义的外部来源? - Lukas Graf
1
"\x" 不是 Unicode 转义,而是显示不可打印的 字节 的方式。您需要展示一些输入示例。 - roippi
X是一个示例字符(任何字符)。编辑过了,希望现在更清楚了。 - Hannes Karppila
1个回答

10

使用unicode_escape编码怎么样?

>>> 'hello\r\n'.encode('unicode_escape') == 'hello\\r\\n'
True
>>> 'hello\r\n' == 'hello\\r\\n'.decode('unicode_escape')
True

在Python 3.x中,你需要对字符串/字节进行编码/解码:

>>> 'hello\r\n'.encode('unicode_escape').decode() == 'hello\\r\\n'
True
>>> 'hello\r\n' == 'hello\\r\\n'.encode().decode('unicode_escape')
True

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接