python - 从字符串中删除十六进制表示 - Python

标签 python excel exception pdf openpyxl

好的,这是一个简短的内容:

目标:检测字符串是否包含十六进制值,并正确提取它们或删除它们。

问题:我希望能够使用 openpyxl 将字符串写入 Excel 工作表,而不会引发非法字符异常错误。

有问题的字符串示例:

'\xc2\x87,QGLYLGXDO\x03ZLWK\x03EUHDVW\x03FDQFHU\x03\xc2\x9435

或者:

'5LVN\x03VWDWXV\x1d\x033RRU\x10ULVN\x1e\x03&\\WRJHQHWLFV\x1d\x03&RPSOH[\x03\x0b\xc2\x95\x03\x16\x03FORQDO\x03FKURPRVRPDO\x03DEQRUPDOLWLHV\x0c\x1e\x030RQRVRPDO\x03 

我尝试过的:我尝试在写入之前检查每个元素,它是否是有效的字符串,方法是执行 if type(element) == str:isinstance(element) == unicode 但没有效果。

如何解决这个问题?

额外信息: 我做了什么:

  1. 通过互联网上免费提供的软件将 PDF 文件转换为 xls 格式。 [不幸的是,该软件只是声称将其转换为 xls,但实际上数据是以 xml 形式写入的]
  2. 现在,我获取这些 xml 文件并编写一个解析器来从中提取数据。
  3. 第三,我使用提取的数据并使用 openpyxl 包将其写入 Excel 工作表。

最佳答案

如果您查看 openpyxl 的源代码,您会发现正则表达式负责检查是否允许使用字符,您可以使用它来检查字符串。看来 \x03 就是问题所在。您可以从源中删除或转义这些字符。

import re
ILLEGAL_CHARACTERS_RE = re.compile(r'[\000-\010]|[\013-\014]|[\016-\037]')
m = ILLEGAL_CHARACTERS_RE.search(s)
m
<_sre.SRE_Match object; span=(12, 13), match='\x03'>

关于python - 从字符串中删除十六进制表示 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31509378/

相关文章:

java - 使用 Java itext 库签署 PDF 会因大文件而崩溃

python - 正确地为 c 包装器制作 setup.py

excel - 使用 Excel 计算协方差矩阵

c# - DAL 中的异常处理

vba - 如何在vba宏中检查空数组

.net - 通过.Net 丢失宏的 Excel 开发

java - java中的输入不匹配错误

python - 如何设置y轴限制

python - Pandas DatetimeIndex 中的第一个值是不可搜索的

Python3 - 尝试获取数据属性值时,XPath 查询不会从站点返回整个列表