我知道在编程中转义反斜杠。但是我将命令行参数传递给Python程序进行解析。空白是无关紧要的,但是通过命令行,空格确实很重要。所以我试图将除第一个元素之外的所有argv []参数连接到一个字符串然后解析。但是,在for循环中永远不会遇到单个'\'的标记。
命令行参数(注意'\'周围的空格):
((1 * 2) + (3 - (4 \ 5)))
程序:
import sys
string = ""
for token in sys.argv[1:len(sys.argv)]:
print(token)
if "\\" in r"%r" % token:
print("Token with \\ found")
string += token
print(string)
print("done")
答案 0 :(得分:4)
这不是Python问题。 shell将解释您在命令行中写入的文本,并且(对于典型的Unix shell)执行反斜杠替换。因此,当Python检查命令行时,反斜杠已经被替换掉了。
如果您的shell是Bash或其他与Bourne兼容的Unix shell,则解决方法是将反斜杠加倍或将其放在单引号中。 Windows CMD本身就是不同的,令人困惑; Csh加倍。