我最近編寫了一個腳本來從PDF中提取所有書籤並將它們保存在docx文件中。它適用於90%的文件,但不幸的是有一些似乎與unicode有問題。刪除無效的ascii字符的Python
我得到一個列表中的書籤是這樣的:
[[u'3. Mechatronik f\xfcr Doppelkupplungsgetriebe, Sicherungshalter B, Sicherung 14 auf Sicherungshalter C', 2],
[u'4. Geber f\xfcr Getriebeeingangsdrehzahl, Hydraulikdruckgeber 1 f\xfcr automatisches Getriebe, Magnetventil 2, Magnetventil \x04, Magnetventil 5', 2],
[u'5. W\xe4hlhebel, Schalter f\xfcr W\xe4hlhebel in P gesperrt, Magnet f\xfcr W\xe4hlhebelsperre', 2],
[u'6. W\xe4hlhebel, Geber 2 f\xfcr Antriebswellendrehzahl, W\xe4hlhebel-Positionsanzeige', 2]]
當我嘗試運行的功能我得到的錯誤:
ValueError('All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters',)
代碼:
from docx import Document
list1 = [[u'3. Mechatronik f\xfcr Doppelkupplungsgetriebe, Sicherungshalter B, Sicherung 14 auf Sicherungshalter C', 2],
[u'4. Geber f\xfcr Getriebeeingangsdrehzahl, Hydraulikdruckgeber 1 f\xfcr automatisches Getriebe, Magnetventil 2, Magnetventil \x04, Magnetventil 5', 2],
[u'5. W\xe4hlhebel, Schalter f\xfcr W\xe4hlhebel in P gesperrt, Magnet f\xfcr W\xe4hlhebelsperre', 2],
[u'6. W\xe4hlhebel, Geber 2 f\xfcr Antriebswellendrehzahl, W\xe4hlhebel-Positionsanzeige', 2]]
def save_docx(list1):
document = Document('default.docx')
file = open("Error_Log.txt", 'w')
for i in list1:
try:
p = document.add_paragraph()
p.add_run(i[0]).bold = True
except Exception as e:
file.write(repr(e) + '\n')
file.close()
document.save('Bookmarks.docx')
save_docx(list1)
林猜測問題是\x0
但我不知道如何刪除這樣的部分,而不毀了整個d ocument。 我已經試過不同的編碼和其他任何我可以在網上找到,但沒有任何工作到目前爲止。
任何幫助將不勝感激!
你試過這個嗎? 'i [0] .encode('utf-8')'基於http://stackoverflow.com/questions/5760936/handle-wrongly-encoded-character-in-python-unicode-string –
yes嘗試以各種方式進行解碼和編碼,例如'我[0] .encode('ascii''忽略')'等等。沒有任何工作。也看了可能幫助但沒有運氣的圖書館。 – TacashiX
@jackmorris的不錯答案。難道在編碼之後控制字符仍然在字符串中?因此最終結果將是相同的(error'no control characters') –