' \'在行或行的末尾给出split()错误

时间:2017-08-21 10:25:41

标签: python escaping

code="""
[--]
{start}
\ok\
"waw"
the-end
"""
for i in code.split('\n') :
    print i

Result: 

[--]
{start}
\ok"waw"
the-end

我无法访问用户键入的代码。 ' \'在\ ok \结束时给我错误的结果。我怎样才能正确分裂()?

1 个答案:

答案 0 :(得分:1)

问题是,正如评论中所提到的,字符串文字后跟换行符中的\\将转义该换行符,因此实际上code的值已经

[--]
{start}
\ok"waw"
the-end

您可以参考this获取有关Python中字符串文字的更多信息。

ok"waw"之间没有换行符。问题实际上并不在于您的代码,而在于您的示例输入。你说你无法访问'代码',因为用户会修改它 - 我只能假设你不是指用户修改程序来提供输入。我对如何获取输入的建议是让用户提供单独的文件。这样,字符串将被解释为一个字符流,并且单独使用,Python不会尝试进行任何转义。为简单起见,我已对文件名进行了硬编码,但最终可能也是一个好主意,以便使其灵活(从stdin获取输入,让用户提供文件名等等。)。

文件input.txt包含:

[--]
{start}
\ok\
"waw"
the-end

代码:

import sys
with open("input.txt", "r") as in_file:
    for line in in_file:
        sys.stdout.write(line)

正如预期的那样,代码输出

[--]
{start}
\ok\
"waw"
the-end

大概你想用线条做更多的事情,因为这只是复制了输入。