اذهب إلى المحتوى
  • 0

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

HardWord

السؤال

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

>>> 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

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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

المصدر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...