我有一个脚本,我从命令行运行,我希望能够将字符串参数传递给。如在
script.py --string "thing1\nthing2"
这样程序会将'\ n'解释为新行。如果string="thing1\nthing2"
我想要
print string
返回:
thing1
thing2
而不是thing1\nthing2
如果我只是将字符串“thing1 \ nthing2”硬编码到脚本中,它会执行此操作,但如果它通过getopt作为命令行参数输入,则它无法识别它。我已经尝试了很多方法:在cl字符串中读取r"%s" % arg
,在命令行上指定它的各种方法等,似乎没有任何工作。想法?这完全不可能吗?
答案 0 :(得分:9)
来自Bash中的https://stackoverflow.com/a/4918413/478656,您可以使用:
script.py --string $'thing1\nthing2'
e.g。
$ python test.py $'1\n2'
1
2
但那是Bash特有的语法。
答案 1 :(得分:4)
这实际上是一个shell问题,因为shell会执行所有命令解析。 Python并不关心它发生了什么,只能在exec
系统调用中得到结果。如果你正在使用bash,它不会在双引号之间进行某些类型的转义。如果您希望对\n
,\t
或\xnn
之类的内容进行转义,则以下语法为bash扩展名:
python test.py $'thing1\nthing2'
你也可以这样做:
python test.py "thing1
thing2"
如果您对此感兴趣,请参阅bash引用的更多信息。即使您不使用bash,它仍然可以很好地阅读:
答案 2 :(得分:-3)
这个相对简单,我很惊讶没人说过。
在你的python脚本中,只需编写以下代码
print string.replace("\\n", "\n")
您将获得使用新行打印的字符串,而不是\ n。