在Python中在字符前添加零

时间:2016-03-05 18:18:48

标签: python regex list

我的输入csv文件如下所示

S.No第一个第二个第三个

1 71.28 75.30 79.78

2 3.45 36.65 25.4

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

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

['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,这就是我需要的, 但是在主文件的情况下这不起作用。 请帮我。

3 个答案:

答案 0 :(得分:3)

您需要查看字符串列表,然后将每个字符串转换为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 “)

  

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

说明:

  • \b在开始和结束时保持单词边界。

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

替换为:替换为0\1\1被捕获的单个数字。

Regex101 Demo

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