Python实现批量生成字符串最佳思路是什么,python思路,比如我现在有abc1,a
Python实现批量生成字符串最佳思路是什么,python思路,比如我现在有abc1,a
比如我现在有abc1,abc2,abc3..这样一直到abc100
我想有这样一个脚本可以直接
python parse.py "abc[1-100]"
这样生成,,支持[a-z]这样,同时还支持{1,2,4}这样枚举的写法
之前的思路是利用split()这样来过滤掉{}或者[]来进行解析
代码非常丑,而且效果不太好
后来有学长之前说可以用re.sub来做,还没尝试
不知道大家有没有更好玩的想法~~求指点
简单实现了一下 [] 的方式, {}的实现方法楼主可以参照这个实现 :)
需要 ply 模块
#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'web'import ply.lex as leximport ply.yacc as yacc# 词法分析tokens = ('WORD', 'NUMBER')# Regular expression rules for tokenst_NUMBER = r'\d+'t_ignore = ' \t'def t_WORD(t): r"""[a-z_]+""" return tdef t_error(t): print "Illegal character '%s'" % t.value[0] t.lexer.skip(1)literals = ['[', ']', '-']lexer = lex.lex()# 语法分析def p_stmt_bracket(p): """stmt_bracket : WORD '[' stmt_bracket_inside ']'""" p[0] = p[1] for i in p[3]: print(p[0]+i)def p_stmt_bracket_inside(p): """stmt_bracket_inside : WORD '-' WORD | NUMBER '-' NUMBER""" if p[1].isdigit(): p[0] = [str(x) for x in range(int(p[1]), int(p[3]) + 1)] if p[1].isalpha(): p[0] = [chr(i) for i in range(ord(p[1]), ord(p[3]) + 1)]def p_error(p): print 'parse error, unexpected token:', p.typeparser = yacc.yacc()if __name__ == '__main__': # 测试数据 data = 'abc[1-3]' data2 = 'abc[a-d]' parser.parse(data) print('-------') parser.parse(data2)
下面是结果 :)
abc1abc2abc3--------abcaabcbabccabcd
编橙之家文章,
相关内容
- Python2.7遍历包含一个dict的tuple变量应该怎么写,python
- 实现qml+python打包成exe小程序问题,qmlpython,我写了一个
- Python在mac最常用编辑器是哪几款?,pythonmac,我先来Xcod
- Python新手求助Tornado/Cyclone RBAC修饰符编写方法,tornado
- Python实现插入排序算法遇到问题找不到原因,求大神解
- Python语言xlwt模块写excel数据报错,pythonxlwt,用python的x
- 求助关于restfull api接口几个问题,restfullapi,class User(d
- flask获取请求xml类型的二进制文件如何实现,flaskxml,最
- 请问vs2013没有scrapy破,vs2013scrapy破,我在Windows的命令
- Python append和列表解析类型转换问题,pythonappend,问题:
评论关闭