1

我刚刚为我正在从事的这个项目学习了 Python,我无法比较两个值 - 我正在使用 Python xlwt 和 xlrd 库并从文档中提取单元格的值。问题是某些值的格式为“NP_000000000”、“IPI00000000.0”和“000000000”,所以我需要检查值的格式,然后在比较之前去掉字符和小数点(如有必要) .

我尝试使用S1[:3]来获取不带字母字符的值,但出现“浮点数不可下标”错误

然后我尝试做re.sub(r'[^\d.]+, '', S1),但我得到一个 Typerror: expected a string or buffer

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

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

4

2 回答 2

0

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

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

    s = str(S1) ...

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

    if isinstance(S1, basestring): # 这是一个字符串,去掉前缀 elif isinstance(S1, float): # 这是一个浮点数,直接使用

于 2013-06-17T14:29:47.207 回答
0

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

float(str(S1)[3:])

得到你想要的。您可以将浮点数更改为整数。

于 2013-06-17T13:55:31.997 回答