将单反斜杠转换为双反斜杠

Convert single backslash to double backslash

我有一个包含目录的列表:("..\b\c.txt", "..\b\d.txt")。 我计划使用 .split() 方法来获得另一个由 "\" 分隔的目录组件列表,但我没有成功主要是由于 "\" 的使用。因此,最终结果将是这样的 ("a", "b, "c.txt") ...

我确实理解 \ 是一个转义字符以及 this link 报告的困难,但我不明白是否可以将整个列表转换为原始字符串。有人可以帮忙吗?

files = ('..\..\data\User\level1\level2\sun.png','..\..\data\User\level1\level2\description.txt')

我正在测试这样的东西:

str = files[0].split("\")

期望的输出:一个列表包含:

('data', 'User', 'level1', 'level2', 'sun.jpg')

如果 files 是文字,使用原始文字表示法 然后 :

files = (
    r'..\..\data\User\level1\level2\sun.png',
    r'..\..\data\User\level1\level2\description.txt'
)

在这个具体示例中,您设法避开了所有已知的字符转义序列,但那只是运气。

您可以使用 "\" 来定义一个只有反斜杠的字符串:

files[0].split("\")

演示:

>>> files = (
...     r'..\..\data\User\level1\level2\sun.png',
...     r'..\..\data\User\level1\level2\description.txt'
... )
>>> files[0].split("\")
['..', '..', 'data', 'User', 'level1', 'level2', 'sun.png']

如果您想将路径分成几部分,您可能应该查看 os.path.split() 和该模块中的其他函数。使用此类函数有助于使您的代码平台不可知。

还有 os.sep and os.altsep,这也有助于使您的代码独立于 OS。

事实证明,您还没有完全理解 \ 作为转义字符。转义字符不是实际字符串中的额外字符,它们是源代码中的额外字符。

要在 Python 中创建一个包含一个 \ 字符的字符串,您可以像这样使用 \ 作为转义字符:

"\"

源代码中引号之间有2个字符,但在实际字符串中,只有"escaped character",即第二个[=12] =].

注意 "raw strings" 是相似的:不同之处在于 在源代码中 ,而不是实际的字符串。以下相等:

"abc\def"
r"abc\def"

我遇到这种疑惑的时候就是在解释器的交互模式下玩,建议你也这样做。例如,如果您不确定像 "abc\def" 这样的字符串的真正内容是什么,您可以尝试 print-ing 它。