• 0

كيف أحول البايت إلى سلسلة نصية في البايثون ؟

أقوم باستخدام هذه الشيفرة البرمجية للحصول على مخرجات قياسية من برنامج خارجي:

>>> from subprocess import *
>>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]

سيقوم تابع communicate() بإرجاع مصفوفة من البايتات كما يلي:

>>> command_stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2\n'

أريد تحويل هذه البايتات إلى سلسلة نصية عادية في البايثون لأستطيع طباعتها كما يلي:

>>> print(command_stdout)
-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1
-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2

فما هي أفضل الطرق لفعل ذلك ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك العديد من الطرق لتحويل البايتات إلى سلاسل نصية في البايثون، ومن أسهل هذه الطرق استخدام التابع decode لفك تشفير حسب ترميز معين مثل utf-8 حيث سيتم تحويل البايتات إلى سلسلة نصية بترميز utf-8 كما في المثال التالي:

>>> b"abcde"
b'abcde'

# utf-8 is used here because it is a very common encoding, but you
# need to use the encoding your data is actually in.
>>> b"abcde".decode("utf-8")
'abcde'

كما يمكنك فك شيفرة البايتات لتحويلها إلى سلسلة نصية عن طريق الأمر التالي:

str(b'hello', encoding)

كما يمكنك استخدام هذه الطريقة التي تقوم بالتكرار على جميع البايتات وبعد ذلك تقوم بتحويلهم إلى حروف ثم ستقوم بإضافتها إلى سلسلة نصية:

bytes = [112, 52, 52]
"".join(map(chr, bytes))
>> p44

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن