Python2.7拆分线无法拆分尾部反斜杠

2024-10-02 12:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用python2.7.9时,我尝试使用一个DOS风格的目录列表,并使用内置的splitlines函数将其拆分成单独的行。这个清单是一个目录,我的三重引号字符串中的一行包含一个尾部反斜杠。问题是以反斜杠结尾的行没有被拆分:

# DOS-style listing of the directory "B:\"
listing = """Directory of B:\
            12/15/2014  02:12 PM             1814814 BIRD.LOG
            01/01/2000  12:04 AM    <DIR>            CONFIG
            12/15/2014  02:55 PM               35060 ALLIGATOR.LOG
            03/15/2013  02:06 PM    <DIR>            MONKEY
            03/15/2013  02:06 PM    <DIR>            FROG
            03/15/2013  02:06 PM    <DIR>            BADGER
                2 File(s)    1849874 bytes
                4 Dir(s)     1674739712 bytes free
"""

# BIRD.LOG is combined with prior line ending in a backslash
print "keepends = False"
for line in listing.splitlines(False): print repr(line)

# Setting keepends=True does not help
print "keepends = True"
for line in listing.splitlines(True): print repr(line)

输出如下:

^{pr2}$

问题在于传递keepends = True。{{a1}和任何反斜杠的处理都没有提到。在

我的代码示例来自一个单元测试,但在现实世界中,该列表将以编程方式检索。我可以想到一些解决方法,包括操作我的输入列表或其他方法,但我想知道为什么有必要使用变通方法。是虫子吗?任何建议都将不胜感激!在


Tags: ofin目录logtrue列表dirline
1条回答
网友
1楼 · 发布于 2024-10-02 12:33:55

单元测试的问题是字符串文本中的\字符被Python解释为转义字符。试着改变第一行

listing = r"""Directory of B:\

Python docs

String literals may optionally be prefixed with a letter 'r' or 'R'; such strings are called raw strings and use different rules for interpreting backslash escape sequences.

在从命令输出中获取字符串的实际工作场景中,这应该不是问题。在

相关问题 更多 >

    热门问题