【发布时间】:2013-08-23 12:16:08
【问题描述】:
今天我编写了一个 Python 脚本来处理数据并以自定义格式打印它们。它在交互式 Python 下按预期工作。然后我继续尝试在终端中将输出重定向到一个文本文件,并遇到了一些意想不到的事情。
我尝试的特定示例是按列排列数据列表,并以 LaTeX 表格格式打印它们。它的工作方式或多或少类似于:
foo(mylist, sep_col='\t', sep_row=r'\\ \hline')
当我尝试在终端中运行脚本时,我这样做了:
$ python -c "from foo import foo; foo(mylist, col_sep=' & ', row_sep=r' \\ \hline')" > results.txt
但原来\\ \hline部分显示为\ \hline,和交互式Python下不一样。
当我更多地研究问题(或者可能是背后的原理)时,我发现$ python -c处理的Python脚本的行为在交互式Python下是不一样的。
在交互式 Python 下:>>> print r'\\' 给出\\
但是,在终端中,$ python -c "print r'\\'" 引发了 SyntaxError:
File "<string>", line 1
print r'\'
^
SyntaxError: EOL while scanning string literal
当反斜杠的数量为 3 或 4 时,终端似乎给出了\\。数字 5 或 6 会引发错误。 7个反斜杠给\\\\,也就是说在这种环境下没有办法给\\\。
我已经搜索这个问题很长时间了,但似乎很少有人谈论$ python -c。如果我复制了,请提前道歉。
【问题讨论】:
标签: python shell terminal latex backslash