ValueError: could not convert string to float: '人员经费支出'
时间: 2023-10-18 22:33:04 浏览: 100
这个错误是因为在字符串中有一些单元格的值不是浮点数,而是字符串"人员经费支出"。这个字符串不是有效的浮点数,不能转换为浮点数类型。
你可以在代码中添加一些检查,以确保单元格中的值是浮点数,例如:
```python
import re
# 定义正则表达式
pattern = r'(人员经费支出|工资支出|社会保险费支出|公积金支出)\s*([0-9,]+\.[0-9]{2})元'
# 在单元格中查找匹配项并写入Excel
for row in sheet.iter_rows():
for cell in row:
if cell.value:
if isinstance(cell.value, str): # 检查单元格的值是否为字符串类型
match = re.search(pattern, cell.value)
if not match: # 如果单元格的值不是匹配的数字格式,则跳过该单元格
continue
keyword = match.group(1)
value = float(match.group(2).replace(',', ''))
elif isinstance(cell.value, (int, float)): # 如果单元格的值是整数或浮点数类型,则直接使用该值
keyword = cell.offset(column=-1).value
value = float(cell.value)
else: # 如果单元格的值是其他类型,则跳过该单元格
continue
cell.offset(column=1).value = value
if keyword == '人员经费支出':
total = value
else:
total += value
```
在上述代码中,我们添加了一些检查,以确保单元格中的值是浮点数。如果单元格的值是字符串类型,则使用正则表达式进行匹配,提取其中的数字;如果单元格的值是整数或浮点数类型,则直接使用该值;如果单元格的值是其他类型,则跳过该单元格。
这样就可以避免在字符串中出现无法转换为浮点数的值时出现错误。
阅读全文