使用 argparse 解析带有换行符的文本
Parse text with newline using 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
对此有什么想法吗?
您的 \n
被视为 \
后跟 n
,而不是应有的解释。使用 echo
或 printf
之类的命令来正确解释它。这几乎适用于任何 shell(sh
、bash
、zsh
等)。
$ ./newline2argparse.py "$(echo -en 'line1\nline2')"
$ ./newline2argparse.py "$(printf 'line1\nline2')"
$ ./newline2argparse.py `printf "line1\nline2"`
有很多选择。
如果要在 shell 字符串中处理转义序列,请用 $''
将其包围
./newline2argparse.py $'line1\nline2'
请注意,这是一个 bash
扩展,所有其他 shell 可能不支持它。
在 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
对此有什么想法吗?
您的 \n
被视为 \
后跟 n
,而不是应有的解释。使用 echo
或 printf
之类的命令来正确解释它。这几乎适用于任何 shell(sh
、bash
、zsh
等)。
$ ./newline2argparse.py "$(echo -en 'line1\nline2')"
$ ./newline2argparse.py "$(printf 'line1\nline2')"
$ ./newline2argparse.py `printf "line1\nline2"`
有很多选择。
如果要在 shell 字符串中处理转义序列,请用 $''
./newline2argparse.py $'line1\nline2'
请注意,这是一个 bash
扩展,所有其他 shell 可能不支持它。