我的输入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,这就是我需要的,
但是在主文件的情况下这不起作用。
请帮我。
答案 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程序的演示,请继续。