我已經在ubuntu中使用pdftotext -raw /path/to/pdf.pdf /path/to/output.txt
將pdf文檔轉換爲文件。我使用sample = open("/path/to/output.txt").read()
讀取轉換後的文件。現在示例有未解碼的Unicode字符串,如\xe2\x80\x99
。我想使用正則表達式替換它們''
。我使用的模式re.sub(r"""\\\\"""," ",sample),re.sub(r'\\x..',"",sample),re.sub(r'\\\\x..'," ",sample)
使用re替代unicode字符串
例如藉此
abc="[email protected]\n\x0c"
re.sub(r'\\x..',"",abc)
re.sub(r'\\\\x..'," ",abc)
abc.encode("ascii","ignore")
我評價\\x..
模式using this online regex tester選擇語言蟒蛇also this和this SO Question's answer使用基於參考\\\\x..
模式,但兩者給我[email protected]\n\x0c
作爲輸出。它不會刪除這些unicode字符串。我不想使用模式\\\w..
,因爲它可能會選擇轉義序列。即使我嘗試過輸入UnicodeDecodeError
的abc.encode('utf8')。我明白這個問題是因爲\x??
正在被讀爲字符串,但我不知道如何解決這個問題。
如果你想在解決方案進行測試,請使用這些:
182\nWheel of Life, 24\xe2\x80\x9325, 135\xe2\x80\x93136
\n194\xe2\x80\x93195
CTI\xe2\x80\x99s\ntraining enables participants
80\xe2\x80\x9383
這些測試串的預期輸出應該是
182\nWheel of Life, 2425, 135136
\n194195
CTIs\ntraining enables participants
8083
注:
我ve也試過
abc=abc.decode("utf-8")
abc=abc.encode("ascii","ignore")
這個刪除某些字符,但我仍然可以看到一些字符串像\x0c
這是換所以我只想正則表達式的方式來替換這些字符串。
嘗試正則表達式:
abc="[email protected]\x0c\xc0ecoaches.com\n\x0c" #input
re.sub(r'[\\x[a-fA-F0-7]-\\x[a-fA-F0-7]]+',' ',abc)
re.sub(r'[^\x00-\x7F]+',' ',abc)
re.sub(r'\\x..',"",abc)
re.sub(r'\\\\x..'," ",abc)
請加原因downvoting。因爲它會幫助我理解我的錯誤。問題可能很簡單,但需要解決方案。我在這裏張貼之前已經做了很多的研究及嘗試,我希望人們「LL值它們