2014-05-15 137 views
-2

编辑:我知道有以前的类似问题。除了那些已经知道Python的人提出的问题。我确实尝试了你建议的重复答案,但它不起作用(当我用命令行参数运行它时,控制台中没有显示)。该解决方案似乎通过cmd行arg忽略输入值。我可以用其他语言轻松完成工作。但是对于这个练习,我需要一个Python脚本。请帮我写一个脚本以备使用。对不起,如果这听起来像一个粗心的请求。我知道编程,这里的麻烦是我对Python一无所知。Python脚本插入千位分隔符

这是用于Hive语言(Hadoop的一部分)的流式练习。这里是规格:

  • 脚本取从命令行参数的值,并将结果返回到标准输出
  • 添加千分当该值与数值兼容,否则重新输出相同的输入价值不变。

例子:

$ InsertThousandSeparator.py 386 
386 

$ InsertThousandSeparator.py 1234567 
1,234,567 

$ InsertThousandSeparator.py 123ABC 
123ABC 

$ InsertThousandSeparator.py 123ABC456 
123ABC456 

$ InsertThousandSeparator.py Hello 
Hello 

$ InsertThousandSeparator.py 12345.67 
12,345.67 

与小数最后一个例子,如果它过于复杂代码,这可能会被跳过。

非常感谢您的帮助。

+0

我读到这个错误还是第一个输入/输出错误? –

+0

这些是程序应该处理的* only *个案吗?或者应该使用'12345ABC12345 - > 12,345ABC12,345'等程序?无论如何,你可以使用'''格式说明符:'':{。,。2f}'格式(12345.67)'是''12,345.67''。 – Bakuriu

+0

@ aj8uppal,你是对的,我已经改正了。 – Polymerase

回答

1

好的,在这里你是 - 一个Python 2.7的脚本。但下次请尝试提出一个问题,好吗?

import sys 
arg = sys.argv[1]     # get first command line parameter 
if arg.isdigit():     # integer value 
    value = int(sys.argv[1]) 
else: 
    try: 
     value = float(sys.argv[1]) # try float conversion 
    except ValueError:    # if that fails 
     value = None    # mark value as unusable 
if value is not None: 
    print "{:,}".format(value)  # print with thousands separator 
else:        # or, if not a number 
    print arg      # print as-is. 
+0

真棒,完美的作品。非常感谢你。对不起,我知道我在问一个蹩脚的问题。如果我有语言选择,我甚至可以在睡梦中完成这项工作。幸运的是,这可能是我唯一需要查询Python问题的时间。但是,请注意。下次在StackOverflow上我不会泄露我的无知。 – Polymerase

+0

顺便说一句,你的帮助表示赞赏蒂姆。在我的小练习中,我发表评论一个信用/谢谢你注意到你是Python脚本的作者。 – Polymerase