unicodedata.normalize
ในคำตอบเดิมของฉันฉันยังแนะ อย่างไรก็ตามฉันตัดสินใจที่จะทดสอบและปรากฎว่ามันใช้ไม่ได้กับเครื่องหมายคำพูด Unicode มันทำงานได้ดีในการแปลอักขระ Unicode ที่เน้นเสียงดังนั้นฉันจึงคาดเดาว่าunicodedata.normalize
จะใช้unicode.decomposition
ฟังก์ชันนี้ซึ่งทำให้ฉันเชื่อว่ามันน่าจะจัดการได้เฉพาะอักขระ Unicode ที่เป็นชุดตัวอักษรและเครื่องหมายกำกับเสียงเท่านั้น แต่ฉันไม่ได้เป็นอย่างนั้น ผู้เชี่ยวชาญด้านสเปค Unicode ดังนั้นฉันก็สามารถเต็มไปด้วยอากาศร้อน ...
ไม่ว่าในกรณีใดคุณสามารถใช้unicode.translate
เพื่อจัดการกับอักขระเครื่องหมายวรรคตอนแทนได้ translate
วิธีการใช้เวลาในพจนานุกรมของเลข Unicode จะเลข Unicode จึงคุณสามารถสร้างแผนที่ที่แปลเครื่องหมายวรรคตอน Unicode อย่างเดียวเครื่องหมายวรรคตอน ASCII-ที่เข้ากันได้:
'Maps left and right single and double quotation marks'
'into ASCII single and double quotation marks'
>>> punctuation = { 0x2018:0x27, 0x2019:0x27, 0x201C:0x22, 0x201D:0x22 }
>>> teststring = u'\u201Chello, world!\u201D'
>>> teststring.translate(punctuation).encode('ascii', 'ignore')
'"hello, world!"'
คุณสามารถเพิ่มการแมปเครื่องหมายวรรคตอนเพิ่มเติมได้หากจำเป็น แต่ฉันไม่คิดว่าคุณจำเป็นต้องกังวลเกี่ยวกับการจัดการอักขระวรรคตอน Unicode ทุกตัว หากคุณไม่จำเป็นต้องจัดการกับสำเนียงและเครื่องหมายกำกับเสียงอื่น ๆ คุณยังคงใช้unicodedata.normalize
เพื่อจัดการกับอักขระเหล่านั้นได้