使用 argparse 忽略 CLI 参数中的 substring/linebreak 字符

Ignoring a substring/linebreak character in CLI arguments using argparse

我是第一次使用 Python 中的 argparse 模块,而且我已经一年多没有接触过这门语言了。 我需要解决待办事项列表中的一个错误,如果用换行符输入新任务,它会创建两个条目而不是一个条目,例如:

$ python todo.py add "Hello,
World!"

将创建条目:

0 Hello,
1 World!

有没有办法告诉 argparse 忽略换行符?我试过查看文档,但没找到。

从参数中删除每个换行符,然后将它们传递给 parse_argsparse_known_args:

ArgumentParser.parse_args([arg.replace("\n", "") for arg in sys.argv[1:]])

由于ArgumentParser默认使用sys.argvhttps://github.com/python/cpython/blob/0924b95f6e678beaf4a059d679515956bac608fb/Lib/argparse.py#L1870),你也可以在解析前修改sys.argv,方法相同:

sys.argv = sys.argv[0] + [arg.replace("\n", "") for arg in sys.argv[1:]]
ArgumentParser.parse_args()

或者,您仍然可以覆盖 parse_known_args,因为这是完成解析的地方。