我有一个包含目录的列表:("..\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')
答案 0 :(得分:3)
如果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()
以及该模块中的其他功能。使用这些函数有助于保持代码平台不可知。
答案 1 :(得分:2)
事实证明,你还没有将\
理解为逃避角色。转义字符不是实际字符串中的额外字符,它们是源代码中的额外字符。
要在Python中创建包含一个\
字符的字符串,可以使用\
作为转义字符,如下所示:
"\\"
源代码中的引号之间有2个字符,但在实际字符串中,只有"转义字符",这是第二个{{1} }。
请注意"原始字符串"类似:不同之处在于源代码中的 ,而不是实际的字符串。以下是相同的:
\
当我对这样的事情产生怀疑时,我会在翻译的互动模式中发挥作用,我建议你也这样做。例如,如果您不确定"abc\\def"
r"abc\def"
这样的字符串的真实内容是什么,那么您可以尝试"abc\\def"
- 。