首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :重新编制选项解析器列表

Python :重新编制选项解析器列表
EN

Stack Overflow用户
提问于 2017-06-27 08:29:51
回答 1查看 37关注 0票数 0

我需要分析我输入的所有签名。例如,我的输入可以是:

$ python script.py -i 4:64+0:0:1460:mss*20,7:mss,sok,ts,nop,ws:df:0

我想在:,中分割这个输入,这样我最终得到的列表如下所示:

['4', '64', '0', '1460', 'mss*20', '7', 'mss', 'sok', 'ts', 'nop', 'ws', 'df', '0']

然后,我可以做一个循环或索引来分析我的项目的位置。当我使用函数input()re.split()时,我的程序可以工作。但不是当我想在与optparse的争论中签名时。

如果有人能帮我,那就太好了,谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-27 08:58:10

我觉得很简单。魔术是字符串函数:replacesplit。函数split拆分字符串与给定的分隔符到列表。但是您不能在解析的字符串中使用任何空格,因为argparse会认为它是其他命令行参数。

以下是script.py的完整代码

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: UTF-8 -*

import argparse

DESCRIPTION=u"My parser"
def InitParser():
    parser = argparse.ArgumentParser(DESCRIPTION)
    parser.add_argument(
        '-i', '--input', 
        help=u"Parameter splitted by comma or column"
    )
    return parser

def main():
    parser = InitParser()
    args = parser.parse_args()
    print "Parser args=", args
    print
    if args.input:
        lst = args.input.replace(':',',').split(',')
        print "Splited -i argument:"
        print(lst)
    else:
        print "Missing -i argument"
        return

if __name__ == "__main__":
    main()

程序输出:

代码语言:javascript
复制
C:\temp\tem>script.py -i 4:64+0:0:1460:mss*20,7:mss,sok,ts,nop,ws:df:0
Parser args= Namespace(input='4:64+0:0:1460:mss*20,7:mss,sok,ts,nop,ws:df:0')

Splited -i argument:
['4', '64+0', '0', '1460', 'mss*20', '7', 'mss', 'sok', 'ts', 'nop', 'ws', 'df', '0']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44775568

复制
相关文章

相似问题

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