【问题标题】:Adding zero in front of a character in Python在Python中的字符前面添加零
【发布时间】:2016-06-19 11:29:19
【问题描述】:

我的输入 csv 文件如下所示

S.No first second third

1 71.28 75.30 79.78

2 3.45 36.65 25.4

我的目标是从每行的第一、第二和第三列中提取前两位数字。

我使用列表来存储输出,如下所示。

['71','75','79']

['3.','36','25']

但我想要以下输出(代替'3'。我想要'03')

['71','75','79']

['03','36','25']

我尽了最大努力,但未能成功。我不确定我在哪里犯了错误。

我的尝试:例如让a=['1','2','34']

然后我使用 print str(a[0].zfill(2)) 输出 01 这是我需要的, 但在主文件的情况下,这不起作用。 请帮我。

【问题讨论】:

    标签: python regex list


    【解决方案1】:

    使用 '%' 查找字符串格式。例如,您可以使用 '%02d' 获取具有整数值的前导零。

    【讨论】:

      【解决方案2】:

      您将需要浏览您的字符串列表,然后将它们中的每一个转换为 float(因为看起来您有一些小数点),然后将它们转换为填充零的数字。

      data = ['3.','36','25'];
      new_data = ['%02d' % float(x) for x in data]
      

      format specifier '%02d' 表示您需要一个整数(“d”),如果它的位数少于 2,则将补零(“02”)。

      如果您更喜欢format 方法。

      new_data = ['{0:02.0f}'.format(float(x)) for x in data]
      

      此格式说明符意味着您需要一个用零填充的两位数字(“02”),后跟小数点后的零点(“.0”),输入数据类型为float(“f”)

      注意:这两种解决方案都假定您不关心数据的任何非整数部分(如果有的话)。

      【讨论】:

        【解决方案3】:

        好吧,我不是 python 程序员,但如果必须使用 Regex 来解决它,那么跟随一个会找到所需的数字。这是小数点前的一位数。

        正则表达式: \b(\d)\.\d*\b

        说明:

        • \b 在开头和结尾保持单词边界。

        • (\d)\.\d* 匹配带小数部分的单个数字,但捕获仅单个数字。

        替换为:替换为0\1。其中\1 捕获单个数字。

        Regex101 Demo

        注意:我不是 Python 程序员。如果有人希望在此答案中添加 python 程序的演示,请继续。

        【讨论】:

          猜你喜欢
          • 2017-08-12
          • 2015-05-14
          • 2012-06-22
          • 2019-11-05
          • 2014-07-13
          • 2013-03-29
          • 1970-01-01
          相关资源
          最近更新 更多