使用argparse使用换行符解析文本

时间:2018-06-01 11:07:19

标签: python python-3.x argparse

在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

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:1)

您的\n被视为\,后跟n,而不是解释为它应该。使用echoprintf等命令正确解释它。这应该适用于几乎所有shell(shbashzsh等。

 
$ ./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可能都不支持。