为了账号安全,请及时绑定邮箱和手机立即绑定

在数字范围内四舍五入数字

在数字范围内四舍五入数字

慕村9548890 2021-04-05 21:18:16
我试图弄清楚如何处理我收到的数字范围的变化。我已经从数据帧中编译了它们,并尝试以100-200 / 200-300 / 300-400格式获取所有范围。有时将输入为300.400,而不是300-400,有时将输入为300.5-400.5。如果可能的话,我还要考虑一下将它们输入为300.5.400.5的情况,因为有人可能会这样做,因为它是如此的疯狂。我想我可能应该尝试计划在它们之间没有出现“-”的任何字符。为了简单起见,我想用小数点后的数字四舍五入,并用非“-”字符分隔范围,而不用小数点代替句点。打扰一下我糟糕的代码:num_range = [p.replace(' ', '') for p in num_dirty]num_range = [p.replace(';', ' ') for p in num_dirty]num_range = [p.replace('.', '-') for p in num_dirty]num_clean = []for r in num_dirty:    num_clean.append(r.split('/'))num_clean = list(itertools.chain.from_iterable(num_clean))num_clean = ','.join(num_clean)我还使用在这里找到的此功能来列出频率范围内的所有数字,以便删除所有重复的范围:num_lines = num_clean.split(',')num_numbers = []i = 0for line in num_lines:    if line == '':        continue    elif '-' in line:        t = line.split('-')        num_numbers += range(int(t[0]), int(t[1]) + 1)    else:        num_numbers.append(int(line))
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

我在您帖子的前两段中运行了以下正则表达式


import re

from math import ceil


pat = re.compile(r'(\d+(?:\.\d+)?)\D(\d+(?:\.\d+)?)')

l = [(ceil(float(a)), ceil(float(b))) for a, b in pat.findall(your_post)]

print(l)

# [(100, 200), (200, 300), (300, 400), (300, 400), (300, 400), (301, 401), (301, 401)]

从那里您可以生成格式化的字符串,但是您需要


for pair in l:

    print("{}-{}".format(*pair))


查看完整回答
反对 回复 2021-04-09
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信