ValueError:在工作表标题中找到无效字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ValueError:在工作表标题中找到无效字符相关的知识,希望对你有一定的参考价值。
这个Python代码失败了:
from openpyxl import Workbook
wb = Workbook()
sheet = wb.create_sheet('*nice*')
例外:
/home/foo/local/bin/python /home/foo/src/invalid.py
Traceback (most recent call last):
File "/home/foo/src/invalid.py", line 5, in <module>
sheet = wb.create_sheet('*nice')
File "/home/foo/local/lib/python2.7/site-packages/openpyxl/workbook/workbook.py", line 158, in create_sheet
new_ws = Worksheet(parent=self, title=title)
File "/home/foo/local/lib/python2.7/site-packages/openpyxl/worksheet/worksheet.py", line 121, in __init__
_WorkbookChild.__init__(self, parent, title)
File "/home/foo/local/lib/python2.7/site-packages/openpyxl/workbook/child.py", line 50, in __init__
self.title = title or self._default_title
File "/home/foo/local/lib/python2.7/site-packages/openpyxl/workbook/child.py", line 93, in title
raise ValueError(msg)
ValueError: Invalid character * found in sheet title
如何在标题中创建包含*
的工作表?
答案
我们可以使用星号(*)符号创建工作表吗?
sheet = wb.create_sheet("&nice")
根据this,我们不能在工作表名称中使用以下特殊字符
/ * [ ] : ?
另一答案
您可以使用正则表达式替换无效字符:
import re
from openpyxl import Workbook
from openpyxl.workbook.child import INVALID_TITLE_REGEX
wb = Workbook()
title = re.sub(INVALID_TITLE_REGEX, '_', '*nice*')
sheet = wb.create_sheet(title)
但这不是解决方案,只是一种解决方法。
欢迎更好的解决方案:有没有办法引用*
?
另一答案
为什么你甚至想这样做?
我刚刚创建了一个Excel文件,其中包含一个名为Nice*
的工作表。我做了这个,用一个名为Nice
的工作表创建了一个Excel文件,我解压缩了文件(一个Excel文件实际上是一个压缩目录/文件结构),到处我用Nice
替换Nice*
并再次压缩它。
结果我再也无法打开我的Excel文件了。
因此,即使您管理创建包含星号的工作表,您最终也会得到损坏的Excel文件。
以上是关于ValueError:在工作表标题中找到无效字符的主要内容,如果未能解决你的问题,请参考以下文章
在 Flask-migrate ValueError 中:位置 15 的连接字符串中的插值语法无效
ValueError:np.nan 是无效文档、预期字节或 unicode 字符串
python:我应该使用 ValueError 还是创建自己的子类来处理无效字符串? [复制]
Pyspark - ValueError:无法将字符串转换为浮点数/浮点()的无效文字