unicodedata --- پایگاه داده یونیکد


این ماژول دسترسی به پایگاه داده نویسه‌های یونیکد (UCD) را فراهم می‌کند که ویژگی‌های نویسه را برای تمام نویسه‌های یونیکد تعریف می‌کند. داده‌های موجود در این پایگاه داده از UCD version 17.0.0 کامپایل شده‌اند.

این ماژول از همان نام‌ها و نمادهای تعریف‌شده توسط ضمیمه‌ی استاندارد یونیکد شماره‌ی ۴۴، "Unicode Character Database" استفاده می‌کند.

همچنین ببینید

برای اطلاعات بیشتر درباره‌ی یونیکد و چگونگی استفاده از این ماژول، راهنمای عملی یونیکد را ببینید.

جستجو

lookup(name)

جستجوی نویسه بر اساس نام

name(chr)

برگرداندن نام اختصاص‌داده‌شده به یک نویسه

مقادیر عددی

decimal(chr)

مقدار دهدهی یک نویسه

digit(chr)

مقدار رقمی یک نویسه

numeric(chr)

مقدار عددی یک نویسه

ویژگی‌ها

bidirectional(chr)

کلاس دوسویه یک نویسه

block(chr)

بلوک یونیکد یک نویسه

category(chr)

دسته‌بندی عمومی یک نویسه

combining(chr)

کلاس ترکیب کانونیکال یک نویسه

decomposition(chr)

نگاشت تجزیه نویسه

east_asian_width(chr)

عرض آسیای شرقی یک نویسه

extended_pictographic(chr)

بررسی کنید که آیا یک نویسه دارای ویژگی Extended_Pictographic است یا خیر

grapheme_cluster_break(chr)

ویژگی Grapheme_Cluster_Break یک نویسه

indic_conjunct_break(chr)

ویژگی Indic_Conjunct_Break یک نویسه

isxidcontinue(chr)

بررسی کنید که آیا یک نویسه ادامه دهنده‌ی معتبری برای شناسه‌ است یا خیر

isxidstart(chr)

بررسی کنید که آیا یک نویسه شروع‌کننده‌ی معتبری برای شناسه‌ است یا خیر

mirrored(chr)

ویژگی Mirrored یک نویسه

نرمال‌سازی

normalize(form, unistr)

فرم نرمال‌شده‌ی یک رشته را برمی‌گرداند

is_normalized(form, unistr)

بررسی کنید که آیا یک رشته‌ی یونیکد نرمال‌شده است یا خیر

قطعه‌بندی متن

iter_graphemes(unistr)

خوشه‌های گرافمی را در یک رشته پیمایش کنید

unicodedata.lookup(name, /)

جست‌وجوی نویسه بر اساس نام. اگر نویسه‌ای با نام داده‌شده پیدا شود، نویسه متناظر برگردانده می‌شود. اگر پیدا نشود، KeyError پرتاب می‌شود. برای مثال:

>>> unicodedata.lookup('LEFT CURLY BRACKET')
'{'

نویسه‌های برگردانده‌شده توسط این تابع همان نویسه‌هایی هستند که توسط دنباله خنثی‌سازی \N در رشته‌های لفظی تولید می‌شوند. برای مثال:

>>> unicodedata.lookup('MIDDLE DOT') == '\N{MIDDLE DOT}'
True

تغییر یافته در نسخه‌ی 3.3: پشتیبانی از نام‌های مستعار [1] و دنباله‌های نام‌دار [2] اضافه شده است.

unicodedata.name(chr, default=None, /)

نام اختصاص‌یافته به نویسه chr را به‌صورت یک رشته برمی‌گرداند. اگر هیچ نامی تعریف نشده باشد، default برگردانده می‌شود، یا اگر داده نشده باشد، ValueError پرتاب می‌شود. برای مثال:

>>> unicodedata.name('½')
'VULGAR FRACTION ONE HALF'
>>> unicodedata.name('\uFFFF', 'fallback')
'fallback'
unicodedata.decimal(chr, default=None, /)

مقدار ده‌دهی تعیین‌شده برای نویسه chr را به‌صورت عدد صحیح برمی‌گرداند. اگر چنین مقداری تعریف‌نشده باشد، default بازگردانده می‌شود، یا، اگر داده نشده باشد، ValueError پرتاب می‌شود. برای مثال:

>>> unicodedata.decimal('\N{ARABIC-INDIC DIGIT NINE}')
9
>>> unicodedata.decimal('\N{SUPERSCRIPT NINE}', -1)
-1
unicodedata.digit(chr, default=None, /)

مقدار رقمی اختصاص‌یافته به نویسه chr را به‌صورت عدد صحیح برمی‌گرداند. اگر چنین مقداری تعریف نشده باشد، default برگردانده می‌شود، یا اگر داده نشده باشد، ValueError پرتاب می‌شود:

>>> unicodedata.digit('\N{SUPERSCRIPT NINE}')
9
unicodedata.numeric(chr, default=None, /)

مقدار عددی اختصاص‌یافته به نویسه chr را به‌صورت float برمی‌گرداند. اگر چنین مقداری تعریف‌نشده باشد، default برگردانده می‌شود، یا اگر داده نشده باشد، ValueError پرتاب می‌شود:

>>> unicodedata.numeric('½')
0.5
unicodedata.category(chr, /)

دسته‌ی عمومی اختصاص‌یافته به نویسه‌ی chr را به صورت یک رشته برمی‌گرداند. نام‌های دسته‌ی عمومی از دو حرف تشکیل شده‌اند. برای فهرستی از کدهای دسته، به بخش General Category Values section of the Unicode Character Database documentation مراجعه کنید. برای مثال:

>>> unicodedata.category('A')  # 'L'etter, 'u'ppercase
'Lu'
unicodedata.bidirectional(chr, /)

کلاس دوطرفه‌ی منتساب به نویسه‌ی chr را به شکل یک رشته برمی‌گرداند. اگر چنین مقداری تعریف نشده باشد، یک رشته‌ی خالی برگردانده می‌شود. برای مشاهده‌ی فهرستی از کدهای دوطرفه، به مستندات بخش Bidirectional Class Values section of the Unicode Character Database مراجعه کنید. برای مثال:

>>> unicodedata.bidirectional('\N{ARABIC-INDIC DIGIT SEVEN}') # 'A'rabic, 'N'umber
'AN'
unicodedata.combining(chr, /)

کلاس ترکیب کانونیکال منتساب به نویسه‌ی chr را به عنوان یک عدد صحیح برمی‌گرداند. اگر هیچ کلاس ترکیبی تعریف نشده باشد، 0 را برمی‌گرداند. برای اطلاعات بیشتر، به Canonical Combining Class Values section of the Unicode Character Database مراجعه کنید.

unicodedata.east_asian_width(chr, /)

عرض شرق آسیایی منتساب به نویسه‌ی chr را به شکل یک رشته برمی‌گرداند. برای مشاهده‌ی فهرستی از عرض‌ها و اطلاعات بیشتر، به Unicode Standard Annex #11 مراجعه کنید.

unicodedata.block(chr, /)

مقدار block تخصیص‌یافته به نویسه‌ی chr را برمی‌گرداند. برای مثال:

>>> unicodedata.block('S')
'Basic Latin'

اضافه شده در نسخه‌ی 3.15.

unicodedata.mirrored(chr, /)

ویژگی آینه‌ای اختصاص‌یافته به نویسه‌ی chr را به‌صورت عدد صحیح بازمی‌گرداند. اگر نویسه به‌عنوان نویسه‌ی «آینه‌ای» در متن دوجهته شناسایی شده باشد، 1 و در غیر این صورت 0 بازمی‌گرداند. برای مثال:

>>> unicodedata.mirrored('>')
1
unicodedata.isxidstart(chr, /)

اگر chr بر اساس Unicode Standard Annex #31 یک آغازگر شناسه‌ی معتبر باشد، یعنی ویژگی XID_Start را داشته باشد، مقدار True را برمی‌گرداند. در غیر این صورت False را برمی‌گرداند. برای مثال:

>>> unicodedata.isxidstart('S')
True
>>> unicodedata.isxidstart('0')
False

اضافه شده در نسخه‌ی 3.15.

unicodedata.isxidcontinue(chr, /)

اگر chr بر اساس Unicode Standard Annex #31 یک نویسه‌ی شناسه‌ی معتبر باشد، یعنی ویژگی XID_Continue را داشته باشد، مقدار True را برمی‌گرداند. در غیر این صورت False را برمی‌گرداند. برای مثال:

>>> unicodedata.isxidcontinue('S')
True
>>> unicodedata.isxidcontinue(' ')
False

اضافه شده در نسخه‌ی 3.15.

unicodedata.decomposition(chr, /)

نگاشت تجزیه‌ی نویسه‌ای را که به نویسه‌ی chr اختصاص‌یافته است، به‌صورت رشته برمی‌گرداند. در صورتی که چنین نگاشتی تعریف‌نشده باشد، یک رشته‌ی خالی برگردانده می‌شود. برای مثال:

>>> unicodedata.decomposition('Ã')
'0041 0303'
unicodedata.grapheme_cluster_break(chr, /)

ویژگی Grapheme_Cluster_Break تخصیص‌یافته به نویسه را برمی‌گرداند.

اضافه شده در نسخه‌ی 3.15.

unicodedata.indic_conjunct_break(chr, /)

ویژگی Indic_Conjunct_Break تخصیص‌یافته به نویسه را برمی‌گرداند.

اضافه شده در نسخه‌ی 3.15.

unicodedata.extended_pictographic(chr, /)

اگر نویسه دارای ویژگی Extended_Pictographic باشد، مقدار True و در غیر این صورت False را برمی‌گرداند.

اضافه شده در نسخه‌ی 3.15.

unicodedata.normalize(form, unistr, /)

فرم نرمال form را برای رشته‌ی یونیکدی unistr برمی‌گرداند. مقادیر معتبر برای form عبارت‌اند از 'NFC'، 'NFKC'، 'NFD' و 'NFKD'.

استاندارد یونیکد اشکال مختلف نرمال‌سازی برای یک رشته‌ی یونیکد را بر پایه‌ی تعریف هم‌ارزی کانونیکال و هم‌ارزی سازگاری تعریف می‌کند. در یونیکد، می‌توان چندین نویسه را به روش‌های مختلفی بیان کرد. برای مثال، نویسه‌ی U+00C7 (LATIN CAPITAL LETTER C WITH CEDILLA) همچنین می‌تواند به‌صورت دنباله‌ی U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA) بیان شود.

برای هر نویسه، دو فرم عادی وجود دارد: فرم عادی C و فرم عادی D. فرم عادی D (NFD) همچنین با عنوان تجزیه‌ی کانونیکال (canonical decomposition) شناخته می‌شود و هر نویسه را به فرم تجزیه‌شده‌ی آن تبدیل می‌کند. فرم عادی C (NFC) ابتدا یک تجزیه‌ی کانونیکال (canonical decomposition) اعمال می‌کند، سپس نویسه‌های از پیش ترکیب‌شده را دوباره ترکیب می‌کند.

علاوه بر این دو صورت، دو صورت نرمال دیگر نیز بر پایه‌ی هم‌ارزی سازگاری وجود دارد. در یونیکد، از برخی نویسه‌ها پشتیبانی می‌شود که به‌طور معمول با نویسه‌های دیگر یکسان‌سازی می‌شدند. برای مثال، U+2160 (ROMAN NUMERAL ONE) در واقع همان U+0049 (LATIN CAPITAL LETTER I) است. با این حال، این نویسه در یونیکد برای سازگاری با مجموعه‌نویسه‌های موجود (برای مثال، gb2312) پشتیبانی می‌شود.

فرم نرمال KD (NFKD) تجزیه‌ی سازگاری (compatibility decomposition) را اعمال می‌کند، یعنی همه‌ی نویسه‌های سازگاری را با معادل‌هایشان جایگزین می‌کند. فرم نرمال KC (NFKC) ابتدا تجزیه‌ی سازگاری را اعمال می‌کند و سپس ترکیب کانونیکال (canonical composition) را انجام می‌دهد.

حتی اگر دو رشته‌ی یونیکد نرمال‌شده باشند و برای خواننده‌ی انسانی یکسان به نظر برسند، اگر یکی دارای نویسه‌های ترکیبی باشد و دیگری نداشته باشد، ممکن است مقایسه‌ی آن‌ها برابر نباشد.

unicodedata.is_normalized(form, unistr, /)

بازمی‌گرداند که آیا رشته‌ی یونیکد unistr در فرم نرمال form قرار دارد یا خیر. مقادیر معتبر برای form عبارت‌اند از 'NFC'، 'NFKC'، 'NFD' و 'NFKD'.

اضافه شده در نسخه‌ی 3.8.

unicodedata.iter_graphemes(unistr, start=0, end=sys.maxsize, /)

یک پیمایش‌گر برای پیمایش روی خوشه‌های گرافیم برمی‌گرداند. با start اختیاری، پیمایش از آن موقعیت آغاز می‌شود. با end اختیاری، پیمایش در آن موقعیت متوقف می‌شود.

تبدیل یک آیتم صادرشده به رشته، زیررشته‌ای متناظر با خوشه‌ی نگاره‌ای را برمی‌گرداند. ویژگی‌های start و end آن، نشان‌دهنده‌ی آغاز و پایان خوشه‌ی نگاره‌ای هستند.

این تابع از قوانین خوشه‌ی گرافیف توسعه‌یافته‌ی تعریف‌شده توسط ضمیمه‌ی شماره‌ی ۲۹ استاندارد یونیکد، یعنی "Unicode Text Segmentation" استفاده می‌کند.

اضافه شده در نسخه‌ی 3.15.

علاوه بر این، این ماژول ثابت‌های زیر را ارائه می‌دهد:

unicodedata.unidata_version

نسخه‌ی پایگاه داده‌ی یونیکد استفاده‌شده در این ماژول.

unicodedata.ucd_3_2_0

این یک شیء است که بیشتر متدهای کل ماژول را دارد، اما به جای آن از نسخه‌ی ۳.۲ پایگاه داده‌ی یونیکد استفاده می‌کند؛ این کار برای برنامه‌هایی است که به این نسخه‌ی خاص از پایگاه داده‌ی یونیکد (مانند IDNA) نیاز دارند.

پانویس‌ها