gpt4 book ai didi

python - $ python -c "script"中的反斜杠

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:40 25 4
gpt4 key购买 nike

今天我写了一个 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 下,$ python -c 处理的 Python 脚本的行为是不一样的。

在交互式 Python 下:>>> print r'\\' 给出 \\

但是,在终端中,$ python -c "p​​rint r'\\'" 引发了一个SyntaxError:

  File "<string>", line 1
print r'\'
^
SyntaxError: EOL while scanning string literal

当反斜杠的数量为 3 或 4 时,终端似乎给出 \\。数字 5 或 6 引发错误。 7个反斜杠给\\\\,意思是这个环境下没办法给\\\

这个问题找了好久,好像很少有人讲$ python -c。如果我复制了,请提前道歉。

最佳答案

在终端中,说:

$ python -c "print r'\\'"
File "<string>", line 1
print r'\'
^
SyntaxError: EOL while scanning string literal

导致错误,因为 shell 起作用了。它 \\ 转换为\(仔细查看错误消息)。

相反,说

$ python -c 'print r"\\"'
\\

从 shell 运行时,即在单引号中提供命令,在双引号中提供 print 的参数。

您在交互模式下执行的命令的等价物是:

$ python -c "print r'\\\\'"
\\

编辑:This答案解释了为什么原始字符串不能有奇数个反斜杠。

而且这个在官方FAQ中也有说明.

关于python - $ python -c "script"中的反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com