나는 최근에 pdf에서 모든 책갈피를 추출하고 docx 파일에 저장하는 스크립트를 작성했습니다. 파일의 90 %에서 작동하지만 유감스럽게도 유니 코드에 문제가있는 것 같습니다.파이썬 잘못된 ASCII 문자 제거
나는이 같은 목록에서 책갈피를 얻을 :
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)
임 전 기능을 실행하려고하면
[[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]]
내가 오류 문제를 추측하면 \x0
하지만 전체 d를 망치지 않고 이런 부분을 제거하는 방법을 알 수는 없습니다. 메모. 나는 diffenrent 인코딩과 온라인에서 찾을 수있는 다른 방법을 시도했지만 지금까지 아무 것도 작동하지 않았습니다.
도움이 될 것입니다.
시도해 보셨습니까? 'i [0] .encode ('utf-8')'http://stackoverflow.com/questions/5760936/handle-wrongly-encoded-character-in-python-unicode-string의 토론을 기초로합니다 –
예 i 예를 들어 다양한 방식으로 디 - 앤 - 인코딩을 시도했다. 'i [0] .encode ('ascii' 'ignore')'등 아무것도 작동하지 않았습니다. 또한 지금까지는 도움이 될만한 도서관을 보았습니다. – TacashiX
@jackmorris의 멋진 답변입니다. 인코딩 된 후에 제어 문자가 문자열에 남아있을 수 있습니까? 따라서 최종 결과는 동일합니다. (오류 '제어 문자 없음') –