我刚刚学习了我正在研究的这个项目的Python,我在比较两个值时遇到了麻烦 - 我正在使用Python xlwt和xlrd库并从文档中提取单元格的值。问题是某些值的格式为'NP_000000000','IPI00000000.0'和'000000000'所以我需要检查该值的格式,然后在必要时删除字符和小数点,然后再进行比较
我尝试使用S1[:3]
来获取没有字母字符的值,但我得到'浮动不可订阅'错误
然后我尝试了re.sub(r'[^\d.]+, '', S1)
但是我得到了一个Typerror:期望一个字符串或缓冲区
我想,因为通过sheet.cell( x, y).value
返回的单元格的值将是一个字符串,因为它是字母数字,但它似乎必须作为浮点数返回
格式化这些值然后进行比较的最佳方法是什么?
答案 0 :(得分:0)
您是否尝试以显示的格式从字符串中获取数字?想从NP_2344获得2344?如果是,那么使用此
float(str(S1)[3:])
得到你想要的东西。您可以将float更改为int。
答案 1 :(得分:0)
听起来您正在使用的API会根据单元格的内容返回不同的类型。你有两个选择。
您可以将所有内容转换为字符串,然后执行您当前正在执行的操作:
s = str(S1) ...
您可以检查输入的类型并采取相应的行动:
如果isinstance(S1,basestring): #这是一个字符串,剥去前缀 elif isinstance(S1,float): #这是一个浮动,只需使用它