在 Python 中将反斜杠作为命令行参数处理
Dealing with backslash as a command line argument in Python
我知道在编程中转义反斜杠。但是,我将命令行参数传递给 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")
这不是 Python 问题。 shell 将解释您在命令行中编写的文本并(对于典型的 Unix shells)执行反斜杠替换。所以当 Python 检查命令行时,反斜杠已经被替换掉了。
如果您的 shell 是 Bash 或其他一些与 Bourne 兼容的 Unix shell,则解决方法是加倍反斜杠或将其放在单引号中。 Windows CMD 本身就不同且令人眼花缭乱; csh加倍这样。
我知道在编程中转义反斜杠。但是,我将命令行参数传递给 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")
这不是 Python 问题。 shell 将解释您在命令行中编写的文本并(对于典型的 Unix shells)执行反斜杠替换。所以当 Python 检查命令行时,反斜杠已经被替换掉了。
如果您的 shell 是 Bash 或其他一些与 Bourne 兼容的 Unix shell,则解决方法是加倍反斜杠或将其放在单引号中。 Windows CMD 本身就不同且令人眼花缭乱; csh加倍这样。