python中包含转义序列的字符串的干净列表

2024-10-03 06:31:06 发布

您现在位置: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"]

我试着替换它们,但没有任何效果,它回到了提取时的状态。有什么建议吗?提前谢谢


Tags: 列表quantityetmiteolhclran
3条回答

这似乎是字节码字符串表示的字符串,您可以将其解码为utf-8。我们使用来自astliteral_eval进行安全评估

这将使您在大部分的过程中达到目标,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.

首先,您可以尝试:

for i, s in enumerate(extracted):
    extracted[i] =(s.replace("b'", '')
                   .replace("i)", '')
                   .replace('\\na', '')
                   .replace('\\n', '')
                   .replace("\\x0c'", '')
                   .replace('.', ''))

下面是一个答案,它假设您在每个字符串中查找的子字符串要么在两个换行符之间,要么在字符串的开头,后跟一个换行符

import re
def find_substring(string):

  string = (eval(string)).decode('UTF-8')

  pattern = r"\n?.*\.?\n" 
  lst = re.findall(pattern,string)
  if len(lst) == 1: 
    substring = lst[0].strip(".\n")
  else:
    pattern2 = r"\n.*\n"
    lst2 = re.findall(pattern2,"".join(lst))
    substring = lst2[0].strip("\n")
  return substring

然后,像这样映射到列表

list(map(find_substring,extracted))

这将产生:

['SYRUP',
 'mi',
 '100',
 'SYRUP',
 'tamol, Ambroxol k',
 'Guaiphenesin',
 'Syrup',
 'ol HCl &',
 'quantity']

相关问题 更多 >