在Python中,使用argparse,有没有办法解析包含作为参数给出的换行符的文本?
我有这个脚本:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('text', help='some text with newline')
args = parser.parse_args(["line1\nline2"])
print(args.text)
按预期打印:
line1
line2
但是如果我在命令行给出参数(在上面的脚本中更改为args = parser.parse_args()
之后),它就不会这样做了。例如:
$ ./newline2argparse.py "line1\nline2"
line1\nline2
有关于此的任何想法吗?
答案 0 :(得分:1)
您的\n
被视为\
,后跟n
,而不是解释为它应该。使用echo
或printf
等命令正确解释它。这应该适用于几乎所有shell(sh
,bash
,zsh
等。
$ ./newline2argparse.py "$(echo -en 'line1\nline2')"
$ ./newline2argparse.py "$(printf 'line1\nline2')"
$ ./newline2argparse.py `printf "line1\nline2"`
有很多选择。
答案 1 :(得分:1)
如果要在shell字符串中处理转义序列,请用$''
./newline2argparse.py $'line1\nline2'
请注意,这是bash
扩展名,所有其他shell可能都不支持。