如何从string中去除字母并比较值?

我刚刚学习了Python这个项目,我正在努力,我比较两个值 – 我使用Python xlwt和xlrd库,并从文档拉单元格的值。 问题是其中一些值的格式为“NP_000000000”,“IPI00000000.0”和“000000000”,所以我需要检查该值的格式,然后在比较之前将字符和小数点去掉。

我已经尝试使用S1[:3]获得没有字母字符的值,但我得到一个'浮动不可以subscriptable'错误

然后我试着做re.sub(r'[^\d.]+, '', S1)但是我得到一个Typerror:期望一个string或缓冲区

我想通过sheet.cell( x, y).value返回的单元格的值将是一个string,因为它是字母数字,但它似乎必须返回为一个浮动

格式化这些值然后比较它们的最佳方法是什么?

你正试图从显示的格式的string中获取数字? 想从NP_2344获得2344? 如果是,那么使用这个

 float(str(S1)[3:]) 

得到你想要的。 你可以将float更改为int。

这听起来像你使用的API是根据单元格的内容返回不同的types。 你有两个select。

  1. 您可以将所有内容转换为string,然后执行您目前的操作:

    s = str(S1)…

  2. 您可以检查input的types并采取适当的措施:

    如果isinstance(S1,basestring):#这是一个string,剥离前缀elif isinstance(S1,float):#这是一个浮点数,就用它