Python写入Excel时处理数值分隔符及str.replace报错问题
问题报错原因
你触发的'str' object has no attribute 'str'报错,是因为.str是pandas库中Series/DataFrame对象的专属字符串访问接口,Python原生字符串类型直接调用内置的.replace()方法即可完成字符替换,不需要额外加.str前缀。
数值格式转换实现方案
你的转换规则可以按优先级拆分处理,注意表头行不需要做数值转换,避免破坏原有列名:
- 带逗号的数值(如
15,300):可按需选择保留原格式,或替换逗号为点得到15.3 - 仅带小数点、无逗号的数值(如
1.022):直接移除小数点得到1022
修改后的核心写入代码如下:
row = 0 column = 0 b = x[:(len(x)-1)] for i in b: c = i.split() column = 0 for item in c: # 表头行(第0行)直接写入,不做格式处理 if row == 0: worksheet.write(row, column, item) else: processed_val = item # 处理带逗号的数值 if "," in processed_val: # 若需要保留"15,300"格式,注释掉下一行替换逻辑即可 processed_val = processed_val.replace(",", ".") # 处理仅带小数点的数值 elif "." in processed_val: processed_val = processed_val.replace(".", "") worksheet.write(row, column, processed_val) column += 1 row += 1 workbook.close()
补充注意事项
如果表格第一列是编号类文本(如你的表头第一列是Mak.No.),存在带点但不需要转换的情况,可以增加列号判断,仅对指定数值列执行转换逻辑,避免误改文本内容。
内容的提问来源于stack exchange,提问作者B. Ozen
相关产品推荐
相关产品推荐

