如何从字符串中删除字母并比较值?

时间:2013-06-17 13:46:11

标签: python excel

我刚刚学习了我正在研究的这个项目的Python,我在比较两个值时遇到了麻烦 - 我正在使用Python xlwt和xlrd库并从文档中提取单元格的值。问题是某些值的格式为'NP_000000000','IPI00000000.0'和'000000000'所以我需要检查该值的格式,然后在必要时删除字符和小数点,然后再进行比较

我尝试使用S1[:3]来获取没有字母字符的值,但我得到'浮动不可订阅'错误

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

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

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

2 个答案:

答案 0 :(得分:0)

您是否尝试以显示的格式从字符串中获取数字?想从NP_2344获得2344?如果是,那么使用此

float(str(S1)[3:])

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

答案 1 :(得分:0)

听起来您正在使用的API会根据单元格的内容返回不同的类型。你有两个选择。

  1. 您可以将所有内容转换为字符串,然后执行您当前正在执行的操作:

    s = str(S1) ...

  2. 您可以检查输入的类型并采取相应的行动:

    如果isinstance(S1,basestring):     #这是一个字符串,剥去前缀 elif isinstance(S1,float):     #这是一个浮动,只需使用它