【发布时间】:2015-10-08 20:05:31
【问题描述】:
我有一个程序可以生成一个数据数组并很好地打印出来。我寻求解决方案的挑战如下:
- 在打印之前将数组中的数据弄脏,例如,插入 非 UTF-8 字符,将字段按错误顺序排列, 更改日期格式。
- 让用户选择发生了哪些“混乱”。
这是我现有程序的精简版,我希望截取和处理它的输出:
ex_matrix = [[402, 'Mayonnaise', '0123', 2014-12-18, '(Burlington, -, -)', 1.0],
[413, 'Peanuts', '0177', 2014-11-10, '(Place, Florida, South Afrika)', 1.0],
[415, 'Seaweed', '0713', 2014-12-02, '(The Pub, -, Newfoundland)', 1.0]]
def print_forecasts(matrix, num_rows):
for r in xrange(num_rows):
print("{%s, [%s, %s, %s, %s], %s}" % (matrix[r][0], matrix[r][1],
matrix[r][2], matrix[r][3], matrix[r][4], matrix[r][5]))
print "# Generated using pickles_program.py \n"
def main():
print_forecasts(ex_matrix, 3)
main()
根据我对 Python 的 argparse tutorial、PEP re. argparse 和几个 StackOverflow 答案的阅读,似乎 argparse 是解决这个问题的关键。这是我写的,只是想了解一下 argparse 的工作原理:
import argparse
num_rows = 3
parser = argparse.ArgumentParser(description="base rate model: error adder")
parser.add_argument("muck2", help="muck up the population field", nargs='?')
args = parser.parse_args()
for i in xrange(num_rows):
matrix[i][1] = "^&*#$)(*DJJJJ)"
print matrix
将有超过 10 种类型的垃圾供用户选择。我想我希望用户能够对命令行说“python pickles_program.py 1 3 8 11”或类似的东西,并拥有muck-up的1、3、8和11 发生,“python pickles_program.py --help”显示所有的垃圾选项。
如果这是一个愚蠢的问题,我希望你能原谅我。我是一名 Python 新手,仍在学习如何使用许多资源来学习这门伟大的语言,但我已经搜索了高低的 SO 和 Python 文档——请相信我,如果我的问题有答案在那里,对于像我这样的人来说,它要么解释得不够好,要么就是太难找到了,因为我还没有找到。
请指教,特别是。关于如何更好/更清楚地提出我的问题!
【问题讨论】:
-
您能否将其简化为 MWE(最小工作示例)?
-
@TobiaTesan 我愿意尽我所能使这个问题符合 SO,但我不知道“最小工作示例”是什么意思。请澄清一下?
-
感谢理解。这里:stackoverflow.com/help/mcve
-
这可能是相关的(关于variable numbers of arguments)
标签: python arrays command-line-interface command-line-arguments argparse