python - python中包含转义序列的字符串的清理列表
问题描述
我正在处理 OCR,并且从图像中提取的文本被附加到一个包含很多转义序列的列表中。
如何清理这样的字符串列表
extracted = ["b'i)\\nSYRUP\\na\\n\\x0c'",
"b'mi.\\n\\x0c'",
"b'100\\n\\x0c'",
"b'Te eT ran\\nSYRUP\\n\\x0c'",
"b'tamol, Ambroxol k\\n\\x0c'",
"b'Guaiphenesin\\n\\x0c'",
"b'Syrup\\n\\x0c'",
"b'ol HCl &\\n\\x0c'",
"b'quantity.\\n\\x0c'"]
对此
cleaned= ["SYRUP",
"mi",
"100",
"Te eT ran SYRUP",
"tamol, Ambroxol k",
"Guaiphenesin",
"Syrup",
"ol HCl &"
"quantity"]
我尝试更换它们,但没有任何效果,它恢复到提取时的状态。有什么建议么?提前致谢。
解决方案
这似乎是字节码字符串表示形式,您可以将其解码为 utf-8。我们使用literal_eval
fromast
进行安全评估。
这将使您大部分时间到达那里,OCR 的奇怪之处,例如i)
您需要通过替换手动修复。
import ast
extracted = [
"b'i)\\nSYRUP\\na\\n\\x0c'",
"b'mi.\\n\\x0c'",
"b'100\\n\\x0c'",
"b'Te eT ran\\nSYRUP\\n\\x0c'",
"b'tamol, Ambroxol k\\n\\x0c'",
"b'Guaiphenesin\\n\\x0c'",
"b'Syrup\\n\\x0c'",
"b'ol HCl &\\n\\x0c'",
"b'quantity.\\n\\x0c'"]
def fix_string(s):
eval_str = ast.literal_eval(s)
dec_str = eval_str.decode('utf-8')
fix_str = dec_str.strip().replace('\n', ' ')
return fix_str
for e in extracted:
print(fix_string(e))
输出:
i) SYRUP a
mi.
100
Te eT ran SYRUP
tamol, Ambroxol k
Guaiphenesin
Syrup
ol HCl &
quantity.
推荐阅读
- mysql - 为什么 MySQL InnoDB 在发生重复键错误时对重复索引记录设置 S 或 X Next-Key 锁?
- r - [TypeError]:无法读取 Null 的属性“substr”
- vhdl - VHDL:案例语句选择必须涵盖表达式的所有可能值
- python - Pandas groupby 在某些特定组中划分连续行
- sql - 这可以作为 SQL VIEW 完成吗
- git - 有没有办法将文件保存在 GIT 存储库中并在本地删除它而不提交删除?
- apache-flink - Flink Logging 在集群模式下不工作
- google-cloud-platform - GCSFileSystem 的 requests_timeout 参数缺少文档
- django - 在 Gandi 服务器上部署 Django 项目
- python - Pyspark:如何从 Dataframe 中的特定列值引导