آموزش رزبری پای ترفند رزبری پای

رفع مشکل فارسى نویسى در پایتون Python

نوشته شده توسط اروند طباطبایی

فارسی نویسی در بسیاری از نرم افزارها با دشواری مواجه است. البته امروزه به دلیل رشد زبان فارسی در فضای مجازی و کامپیوتری، بسیاری از این مشکلات رفع شده اند. در گذشته اکثر نرم افزارها از زبان فارسی پشتیبانی نمی‌کردند. خب یک سری نرم افزارهای Close Source مانند فتوشاپ و پریمایر یا آفیس نیازمند آن بود که از طرف تولید کننده نرم افزار توسعه داده شود. ولی نرم افزارهای دیگر به اصطلاح متن باز یا Open Source به صورت مستقل توسط توسعه دهندگان جامعه فارسی زبان رشد کردند. امروزه این مشکلات خیلی خیلی کمتر شده اند. به امید روزی که زبان فارسی یکی از پرمصرف‌ترین زبان‌ها در جامعه مجازی و کامپیوتری شود.

 

چرا فارسی نویسی در برخی از نرم افزارها با مشکل روربرو است؟

به دو دلیل

۱- زبان فارسی از راست به چپ نوشته می‌شود.

۲- اکثر حروف زبان فارسی دو حالت نوشتاری دارند. حالت حرف به صورت مستقل با حالت همان حرف در کلمه متفاوت خواهد بود.

چه اتفاقی رخ می‌دهد؟ اگر نرم افزار شما کتابخانه زبان فارسی یا برخی از نرم افزارها کتابخانه زبان عربی را نداشته باشد؛ حروف مانند تصویر زیر نمایش داده می‌شوند.

رفع مشکل فارسی نویس در پایتون Python - Digispark

رفع مشکل فارسی نویس در پایتون Python – Digispark

همانطور که در تصویر میبینید. حروف نه تنها به هم نچسبیده‌اند بلکه وارونه نوشته شده اند. یعنی کلمات از راست به چپ کنار هم قرار گرفته‌اند ولی هر کلمه را باید از چپ به راست بخوانید!!! تا متوجه مفهوم بشوید. در ابتدا برای رفع این موضوع باید کتابخانه Bi Directional را در پایتون Python نصب کنید. با نصب این کتابخانه چیدمان حروف درست می‌شوند. ولی همچنان حروف از هم جدا هستند.

در نهایت کتابخانه‌ی Better-Arabic-Reshaper را از گیت هاب دانلود و در پایتون نصب کنید تا مشکل رفع شود. در حین جستجو به یک راه حل مناسب برای رفع همین موضوع در اندروید برخوردم. با کلیک بر استک اورفلو رفع مشکل فارسی نوییسی در اندروید را مشاهده کنید.

کدهای رفع عیب فارسی نویسی در پایتون

import arabic_reshaper
from bidi.algorithm import get_display

#...
reshaped_text = arabic_reshaper.reshape(u'فارسی نویسی در پایتون')
bidi_text = get_display(reshaped_text)
pass_arabic_text_to_render(bidi_text)  # <-- This function does not really exist
#...

 

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۷۵ دیدگاه

  • با سلام
    بنده با برد رسپرى در حال کار با نرم افزار python بودم که یهو پیغام زیر نمایان شد:
    Idle subprocess didn’t make connection. Either IDLE can’t start a subprocess or personal firewall software is blocking connection

    میتونید راهنمایى کنید که مشکل از کجاست؟

    • این مشکل در حالى پیش میاد که idle کرش کرده باشد. لطفا یک بار ریبوت کنید و اگر بعد از ریبوت باز هم این مشکل وجود داشت. باید idle را با perge پاک کنید و دوباره نصب کنید.

    • سلام
      درهنگام بازکردن idle یا هنگام اجرا کردن یک کد این خطا را داد . اگر عکسی از هنگام رخ دادن مشکل را بگذارید . بهتر می توانم کمکتان کنم .
      به امید خدا

  • با عرض سلام و احترام
    لطفا خودتون رو سرکار بذارید 🙂
    پایتون هیچ مشکلی با فارسی نویسی نداره و شما سوادتون نم کشیده.
    تشکر

      • سلام. با تشکراز مطلب مفیدتون. میشه خواهش کنم من را راهنمایی بفرمایید ،من می خواهم با استفاده از seaborn نمودار بکشم. دیتا از یک دیتا ست خوانده می شود که داده ها فارسی هستند، چگونه می توانم دیتا های یک ستون دیتا ست را که فارسی هستن بر روی نمودار به درستی نمایش دهم؟

    • دوست عزیز سلام
      اگر رقیب تجاری این دوستان هستید شاید بهتر باشه بجای سپری کردن وقتتون تو پیج رقبا و تولید کامنت های این چنینی به تولید محتوا بپردازید تا دیگران هم از سواد شما بهره ببرن
      و اگر مثل بنده کاربر عادی هستید لطفا اگر از مطالب خوشتون نمیاد در کمال آرامش پیج رو ترک کنید.
      شاید وقت اون رسیده باشه که ما هم مثل گوشی هامون کمی هوشمند بشیم. مخصوصا ما که تو زمینه اینترنت اشیا و هوشمند سازی اشیا کار میکنیم!!

    • با تشکر از آقای طباطبایی که با وقت گذاشتن افراد بسیاری رو راهنمایی میفرمایید
      باور بفرمایید مدت زیادی هست که دنبال حل شدن این مشکل بودم . ممنون

    • جناب آقای با سواد زبان فارسی پایتون رو هر سیستمی با هر محیطی اجرا نمیشه و باید کتابخانه های مخصوصشو اجرا کنی در ضمن قبل از اینکه اینطوری ضایع بشی یکم رو حرفت فکر و تحقیق کنی بد نیست باتشکر

  • با سلام و عرض خدا قوت
    فقط یک نکته Better-Arabic-Reshaper برای اندروید هست و برای پایتون باید از-Arabic-Reshaper استفاده کرد. لذا لینکی که گذاشتید رو تصحیح کنید

  • سلام
    من کد پایتون برای حرکت یه ربات دارم که error نداره ولی وقتی میخوام تو محیط terminal در ویندوز raspbian اجراش کنم یا هیچ کاری انجام نمیشه
    یا اینکه error permission deny
    میده. اینم بگم دارم با برد raspberry pi کار میکنم
    راهنمایی کنید ممنون میشم

    • با سلام
      احتمالا مسیر فایل پایتون را اشتباه وارد میکنید. همچنین متوجه این قسمت “در ویندوز raspbian” نشدم.

  • با درود من اطلاعات کمی دارم بخاطر همین نمیفهمم منظورتون از نصب کردن کتابخونه در پایتون چجوریه؟ امکانش هست کمی راهنمایی کنید؟ در ضمن پلتفرم من رسپبری پای هست ؟
    و میخواستم بدونم این مشکل توی محیط ترمینال هم حل میشه ؟

    • با سلام
      ضمن تشکر از توجه شما، برای نصب کتابخانه پایتون در رزبری پای با سیستم عامل رزبین از دستور sudo apt-get install ****** میتوانید استفاده کنید. که بجای ستاره‌ها نام کتابخانه مربوطه را وارد می‌کنید.

    • با سلام
      ضمن تشکر از توجه شما، لطفا سوالتان را کامل و واضح بیان کنید، مراحلی را که انجام داده‌اید، اعلام کنید، تا بتوان راهنمایی کامل صورت گیرد.

        • سلام مجدد
          برای بنده در سیستم درست نصب شده است و این ارور را تابحال دریافت نکرده‌ام. باید از دیگر کاربران که به چنین مشکلی برخورده‌اند درخواست پاسخ کنیم.

  • سلام
    بنده چطور میتونم یک متن فارسی را بدون به هم ریختگی در مفسر پایتون در سیستم عامل رزبین در برد رزبری پای ۳ بنویسم. در ضمن روش بالا جواب نداد.
    ممنون

  • با سلام

    همانطور که احتمالا می دانید متن های فارسی در محیط های مهم رسپیری پای بهم ریخته می شود مانند
    Python IDLE
    LX Terminal
    thonny

    و نمی توان فارسی نوشت.
    من این باگ را به سایت اصلی گزارش کرده ام و از شما خواهش می کنم که وقت بگذارید
    و در سایت زیر این باگ را شما هم گزارش کنید تا بلکه دیده شود و اهتمامی به حل آن بورزند:

    https://bugs.launchpad.net/raspbian/+bug/1807975

    پس از لاگین زیر عنوان پست به رنگ سبز این گزینه است :
    Does this bug affect you?
    Yes, it affects me

    با تشکر از همه شما

  • سلام . من فایل زیپ رو از گیت هاب دانلود کردم . حالا محتویات داخل فایل رو چکار کنم ؟؟ منظورم اینه که کجا باید کپی کنم؟؟ ممنون میشم اگه راهنمایی کنید .

  • سلام من تمام این کار هایی که شما گفتین انجام دادم از دیروز دارم استفاده میکنم تا یکی دو ساعت پیش خوب بود ولی مقتی امدم خونه دیدم روی ان دمایی که تنظیم کردم عمل نکرد لطفا به من کمک کنین

  • سلام خسه نباشید و ممنون بابت مطلب خوبتون. من یه مشکل خاصی دارم که شاید خیلیی به این پست مربوط نشه اما جایی روپیدا نکردم که مشکلمو حل کنه..
    من برای نوشتن در فایلها به زبان فارسی ب مشکل بر میخورم . ی مثال سادش اینه:
    f.write(‘سلام’)
    که اروری مثل این میده:
    UnicodeEncodeError: ‘charmap’ codec can’t encode characters in position 10-13: character maps to
    ممنون میشم راهنمایی کنید

  • سلام دوستان میخواستم درباره کالیبره کردن این ترموستات برای شما توضیحاتی را بدم :
    ۱_ این ترموستات دماش اصلا تنظیم نیست وباید خود شما این رو تنظیم کنید
    ۲_ شما برای کالیبره کردن به یک دماسنج خوب نیاز دارید البته اگر این ترموستات رو برای کاری میخواید که خیلی مهم نیست میتونید از دما سنج های که خیلی هم قوی نیستن استفاده کنید هرچی دما سنجتون قوی باشد کالیبره دقیق تر انجام میشه
    ۳_شما برای کالیبره کردن باید دکمه ی set را به مدت ۴ ثانیه نگه دارید تا قسمت تنظیمات ظاهر شود
    ۴_ و با کلیک بر روی دکمه ی + به قسمت p4 بروید و دکمه set بفشارید
    ۵_ خوب برای شما ۰ ضاهر میشود در این قسمت باید ببینید اختلاف ترموستات با اون دماسنجوتون چقدره
    ۶_ خوب برای مثال اگر ترموستات دما را ۳۰ نشان میداد و دما سنج ۲۵ را نشان میدادشما باید با استفاده از دکمه ی – شماره را به -۵ برسانید تا از دما ی ترموستات کم بشود و بلعکس اگر دما سنج ۳۵ را نشان میداد شما با استفده از دکمه + شماره را +۵ میرساندید
    برای خرید تمامی قطعات دستگاه جوجه کشی ( تایمر ،موتور ترنر، سبد هچر،ترموستات ، تایمر دیجیتال،فن ، یونولیت ، رطوبت ساز، دما سنج و رطوبت سج، کنترل رطوبت ، برد دستگاه جوجه کشی و….)

  • سلام به شما. من قبلا با پایتون ۳٫۸ و ماجول VLC کار میکردم و برنامه نوشتم… الان ۳٫۸ نصب کردم وVLC هم نصبه، ولی instance که میسازه فاقد attributeهای چندرسانه ای هست و همون برنامه هایی که روی ۳٫۷ درکامپیوتر دیگه کار میکنن، اینجا خطا میدن. ممنون میشم راهنمایی بفرمایید. QMedia هم خطای directshow میده و نمیتونه چیزی پخش کنه

  • سلام جناب طباطبایی
    زمانی که خروجی exe برای برنامه میگیرم، متن فارسی رو به صورت علامت سؤال نمایش میده. لطف میکنید راهنمایی بفرمایید؟

  • سلام من یک دیتاست دارم که داده های فارسی داره و موقع نمایش جدولی درست نشون داده میشه، اما موقع پلات کردن برچسب های فارسی بهم میریزه.
    از طرفی وقتی میخوام خروجی رو با فرمت dta سیو کنم، ارور یونیکد میده. وقتی هم با فرمت csv سیو میکنم باز همه ی داده های فارسی بهم میریزه. ممنون میشم راهنمایی کنید.

  • سلام.من همین مشکل رو دارم و میخام فقط با import یه کتابخونه تو پایتون موضوع حل شه و دیگه نخاد هر موقع که میخای فارسی بنویسی،چیزهای دیگه ای بزنی که فارسی بنویسه ،لطفا کمکم کنید

    • سلام
      متاسفانه در حال حاضر امکان پذیر نیست و این کتابخانه بهترین راه حل موجود است و در واقع ساده شده کد زیر میباشد:
      import sys
      text = “متن فارسی شما”.encode(“utf-8”)
      sys.stdout.buffer.write(text)

  • سلام
    متاسفانه در حال حاضر امکان پذیر نیست و این کتابخانه بهترین راه حل موجود است و در واقع ساده شده کد زیر میباشد:
    import sys
    text = “متن فارسی شما”.encode(“utf-8”)
    sys.stdout.buffer.write(text)

  • با سلام
    من تازه پایتون نصب کردم. مشکلم اینه که نوار ابزار از سمت راست به چپ قرار داره و موقع تایپ بعد اسیپس نشانگر تایپ میره سمت چپ نوشته یا مثلا وقتی پرانتز میذارم و تو پرانتز شروع به نوشتن میکن جهت پرانتز میچرخه و پشت به نوشته میشه. ممنون میشم راهنمایی کنین

  • سلام
    خسته نباشید
    اولین کتابخونه ای که معرفی کردید یعمی بی دی دیرکشنال وجود ندارد
    و از اون سایت هم نتونستم دانلود کنم
    لطفا راهنمایی کنید چجوری باید این مشکل رو حل کنم

  • چطور میشه یه تابعی از لیست توابع موجود در کلاس تعریف کرد در صورتیکه همون توابع در لیست در یه کلاس دیگه تعریف شده باشه؟

  • اگر شما هم مشکل پیدا نشدن کتابخونه bidi را دارید باید با این درخواست بخواید تا pip برای شما نصب کنه

    !pip install python-bidi

  • import arabic_reshaper
    ImportError: No module named arabic_reshaper
    بعد نصب و ایمپورت خطای بالا را میده و کار نمی کنه

  • pass_arabic_text_to_render وقتی به این قسمت کد میرسه میگه not difind اصلا اینو از کجا ایمپورت کردین؟

  • سلام
    این کتابخانه فقط فارسی نویسی را برای ترمینال مهیا میکند ؟
    یا اینکه در رابط های گرافیکی هم میشه ازش استفاده کرد؟؟

  • سلام.
    من تویLabel مینویسم”ی” زیرش دو نقطه میاد بعد توی پایچارم مینویسم “ی” بدون ۲ نقطه هست بعد شرط مینویسم تشخیص نمیده .چیکار کنم توی لیبل بدون دو نقطه بیاد

  • با عرض سلام.همانطوری که استحضار دارید استفاده کنندگان از این مطالب عموما مبتدی و کسانی هستند که مراحل ابتدایی را در برنامه نویسی طی میکنند.لذا درک بسیاری از مفاهیم وکلی گویی ها برایشان (برایمان)مشکل و یا غیر ممکن است.مثلا نوشتن از راست به چپ یا فاسی کردن اعداد و……در tkinter به چه صورت انجام میشود.
    اگر مقاله کاملی را همراه با مثالهای جامع منتشر بفرمایید.لطف بزرگی در حق افرادی مثل بنده کردید.با سپاس

  • سلام با نرم افزار Pydroid 3 دارم کار میکنم میخوام یه متن فارسی بنویسم ولی حروف تیکه و برعکس میشه چه کنم میشه راهنمایی کنید

  • سلام،
    بسته Better-Arabic-Reshaper فایل setup.py ندارد و با pip نصب نمی‌شود و ظاهرا باید دستی به پوشه مقصد کپی شود. آدرس پوشه مقصد در مک کجاست؟
    ساس

  • سلام
    میخوام زبانش رو به فارسی تغییر بدم
    چطور باید این کار و بکنم لطفا بگید چطوری باید تغییرش بدم

  • اول با دستورهای زیر کتابخانه هارو نصب کنید
    pip install Better-Arabic-Rehaper
    pip install bidi.algorithm
    اگه از pydroid استفاده میکنید از منو ترمینال رو اجرا کنید بعد دستورات رو یکی یکی وارد کنید

    برای فارسی نویسی اول کتابخونه هارو فراخونی میکنیم
    from bidi import algorithm
    import arabic_reshaper

    برای نوشتن از کد زیر استفاده میکنیم
    reshaped_text = arabic_reshaper.reshape(u’فارسی نویسی در پایتون’)
    bidi_text = algorithm.get_display(reshaped_text)
    حالا مثلا میخایم یه لیبل فارسی بنویسیم کافیه مقدار text لیبل رو bidi_text قرار بدیم
    Label(root, text=bidi_text).pack