আমি ওয়েবে এই উত্তরটি পেয়েছি:
import unicodedata
def remove_accents(input_str):
nfkd_form = unicodedata.normalize('NFKD', input_str)
only_ascii = nfkd_form.encode('ASCII', 'ignore')
return only_ascii
এটি দুর্দান্ত কাজ করে (উদাহরণস্বরূপ ফরাসী ভাষায়), তবে আমি মনে করি যে দ্বিতীয় ধাপটি (অ্যাকসেন্টগুলি সরিয়ে নেওয়া) নন-এসসিআইআই অক্ষর বাদ দেওয়ার চেয়ে আরও ভালভাবে পরিচালনা করা যেতে পারে, কারণ এটি কিছু ভাষার জন্য ব্যর্থ হবে (উদাহরণস্বরূপ গ্রীক)) সম্ভবত সবচেয়ে ভাল সমাধান হ'ল ডায়াক্রিটিক্স হিসাবে চিহ্নিত হওয়া ইউনিকোড অক্ষরগুলি স্পষ্টভাবে মুছে ফেলা হবে।
সম্পাদনা করুন : এটি কৌশলটি করে:
import unicodedata
def remove_accents(input_str):
nfkd_form = unicodedata.normalize('NFKD', input_str)
return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
unicodedata.combining(c)
c
পূর্ববর্তী চরিত্রটির সাথে যদি চরিত্রটি একত্রিত করা যায় তবে সত্যটি ফিরে আসবে , এটি মূলত যদি এটি ডায়াস্রিটিক হয়।
সম্পাদনা 2 : remove_accents
একটি ইউনিকোড স্ট্রিং প্রত্যাশা করে , বাইট স্ট্রিং নয়। আপনার যদি বাইট স্ট্রিং থাকে, তবে আপনাকে অবশ্যই এটির মতো একটি ইউনিকোড স্ট্রিংয়ে ডিকোড করতে হবে:
encoding = "utf-8" # or iso-8859-15, or cp1252, or whatever encoding you use
byte_string = b"café" # or simply "café" before python 3.
unicode_string = byte_string.decode(encoding)