পাইথন 3-এ বাইটের জন্য b 'উপসর্গ ছাড়াই চাপুন / মুদ্রণ করুন


112

কেবল এটি পোস্ট করা যাতে আমি এটি পরে অনুসন্ধান করতে পারি, যেমন এটি সর্বদা আমাকে স্টাম্প বলে মনে হয়:

$ python3.2
Python 3.2 (r32:88445, Oct 20 2012, 14:09:50) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import curses
>>> print(curses.version)
b'2.2'
>>> print(str(curses.version))
b'2.2'
>>> print(curses.version.encode('utf-8'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
>>> print(str(curses.version).encode('utf-8'))
b"b'2.2'"

প্রশ্ন হিসাবে: উপসর্গ bytesছাড়া পাইথন 3 এ বাইনারি ( ) স্ট্রিংটি কীভাবে প্রিন্ট করা যায় b'?


উত্তর:


111

ব্যবহার decode:

print(curses.version.decode())
# 2.2

1
@ জামিলাক এটি অনুস্মারক যে এটি প্যারামিটার গ্রহণ করতে পারে
জেমশিত ইস্কেন্দ্রভ

1
এটি ডিফল্টরূপে কীভাবে করা যায়, এটি কি utf-8ডিফল্টরূপে ব্যবহার করা খারাপ ? আমি যখনই .decode('utf-8')কিছু মুদ্রণ করি তখন আমি ব্যবহার করতে চাই না ।
শুভম এ।

কাস্টম মুদ্রণ তৈরি করুন
স্মার্টমনোজ

নিশ্চিত হয়ে নিন যে curses.versionএটি
কোনওটি

24

বাইটস যদি ইতিমধ্যে একটি উপযুক্ত অক্ষর এনকোডিং ব্যবহার করে; আপনি এগুলি সরাসরি মুদ্রণ করতে পারে:

sys.stdout.buffer.write(data)

অথবা

nwritten = os.write(sys.stdout.fileno(), data)  # NOTE: it may write less than len(data) bytes

11

ডেটা যদি কোনও ইউটিএফ -8 সামঞ্জস্যপূর্ণ ফর্ম্যাটে থাকে তবে আপনি বাইটগুলি স্ট্রিংয়ে রূপান্তর করতে পারেন।

>>> import curses
>>> print(str(curses.version, "utf-8"))
2.2

ডেটা ইতিমধ্যে ইউটিএফ -8 সামঞ্জস্য না হলে প্রথমে ptionচ্ছিকভাবে হেক্সে রূপান্তর করুন। যেমন যখন ডেটা আসল কাঁচা বাইট হয়।

from binascii import hexlify
from codecs import encode  # alternative
>>> print(hexlify(b"\x13\x37"))
b'1337'
>>> print(str(hexlify(b"\x13\x37"), "utf-8"))
1337
>>>> print(str(encode(b"\x13\x37", "hex"), "utf-8"))
1337

11

যদি আমরা উত্সটি একবার দেখে নিই bytes.__repr__, তবে মনে b''হয় এটি পদ্ধতিতে বেক করা হয়েছে।

সর্বাধিক সুস্পষ্ট কর্মসূচী হ'ল b''ফলস্বরূপ থেকে ম্যানুয়ালি কেটে ফেলা repr():

>>> x = b'\x01\x02\x03\x04'

>>> print(repr(x))
b'\x01\x02\x03\x04'

>>> print(repr(x)[2:-1])
\x01\x02\x03\x04

5
পার্শ্ব দ্রষ্টব্য: আমি মনে করি না যে অন্য কোনও উত্তর সত্যই প্রশ্নের উত্তর দিয়েছে।
মতিন উলহাক

আমি মনে করি আমি সম্মত হব: আপনার সমাধান, যথা repr(x)[2:-1], strএমন একটি সামগ্রী তৈরি করে যা ইচ্ছামত মুদ্রণ করবে। বিশেষত, repr(b'\x01')[2:-1]স্ট্রিংটি ফেরত দেয় \\x01, যখন decode()ফিরে আসবে \x01যা কারও মতো ইচ্ছা মতো কাজ করে না print()। আরও সুস্পষ্ট হওয়ার জন্য, print(repr(b'\x01')[2:-1])মুদ্রণ হবে \x01যখন print(b'\x01'.decode())কিছু মুদ্রণ করবে না।
এন্টোইন

বিকল্পভাবে, print(repr(b"\x01".decode()))মুদ্রণ করবে '\x01'(একক উদ্ধৃতি সহ একটি স্ট্রিং), যাতে print(repr(b"\x01".decode())[1:-1])মুদ্রণ \x01(একক উদ্ধৃতি ব্যতীত একটি স্ট্রিং)।
এন্টোইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.