首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何字符串格式OptionParser()帮助消息?

如何字符串格式OptionParser()帮助消息?
EN

Stack Overflow用户
提问于 2014-06-19 19:30:35
回答 2查看 1.5K关注 0票数 3

如何字符串格式OptionParser()帮助消息?它似乎忽略了新的行字符?请看下面的代码。

代码语言:javascript
复制
parser = OptionParser()
parser.add_option("--s", dest="s", type="string", help="first line \n second line")

意图:

代码语言:javascript
复制
current output:
.... first line \n second line

expected output:
.... first line 
     second line
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-19 20:24:26

我可以建议argparse解析吗?

我不确定这是否在OptionParser中被支持,但我建议使用三重报价

即:

代码语言:javascript
复制
parser = OptionParser()
parser.add_option('--s',
                  dest='s'
                  type='string'
                  help='''
With triple quotes I can directly put in anything including line spaces.
\n will appear as a string rather than a newline.''')

argparse解析示例:

代码语言:javascript
复制
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--s',
                  help='''first line
second line''')
args = parser.parse_args()
print args.s
票数 1
EN

Stack Overflow用户

发布于 2014-06-24 01:51:24

查看Lib/optparse.py文件。

代码语言:javascript
复制
class HelpFormatter
    def format_option
    ...
    if option.help:
        help_text = self.expand_default(option)
        help_lines = textwrap.wrap(help_text, self.help_width)
        result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
        result.extend(["%*s%s\n" % (self.help_position, "", line)
                       for line in help_lines[1:]])

换句话说,help字符串是通过textwrap.wrap传递的。对该函数的快速测试表明,它删除了嵌入式\n,并按其认为合适的方式分割行。

argparse一样,您可以通过子类HelpFormatter和重写所选的方法来自定义帮助。例如,您可能需要将textwrap调用替换为help_lines = help_text.splitlines()。您松开了自动包装,但获得了对帮助外观的控制。

OptionParser接受一个formatter参数。IndentedHelpFormatter是自定义格式化程序类的一个示例。

argparseRawTextHelpFormatter类就是这样做的,将wrap调用替换为splitlines()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24314839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档