簡體   English   中英

清除 python 中包含轉義序列的字符串列表

[英]Clean list of string containing escape sequence in 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"]

我嘗試更換它們,但沒有任何效果,它恢復到提取時的狀態。 有什么建議么? 提前致謝。

首先,您可以嘗試:

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

這似乎是字節碼字符串表示,您可以將其解碼為 utf-8。 我們使用ast中的literal_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))

Output:

i) SYRUP a
mi.
100
Te eT ran SYRUP
tamol, Ambroxol k
Guaiphenesin
Syrup
ol HCl &
quantity.

這是一個答案,假設您在每個字符串中查找的 substring 位於兩個換行符之間或位於字符串的開頭並后跟一個換行符。

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

然后,map 到列表中是這樣的。

list(map(find_substring,extracted))

這輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM