لماذا string.printable بايثون يحتوي على أحرف ليست للطباعة؟
-
03-07-2019 - |
سؤال
ولقد اثنين من أسرار String.printable في سؤال واحد.
أولا، في بيثون 2.6:
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
وانظروا إلى نهاية السلسلة، وستجد '\ x0b \ x0c "التمسك بها مثل الإبهام قرحة. لماذا هم هناك؟ أنا باستخدام آلة لتعيين إعدادات الاسترالية، لذلك لا ينبغي أن يكون هناك أي أحرف معلمة أو ما شابه ذلك.
وبعد ذلك، حاول تشغيل هذا الرمز:
for x in string.printable: print x,
print
for x in string.printable: print x
والسطر الأول يطبع بنجاح جميع الشخصيات مفصولة بمسافة. شخصيات غريبة اثنين تتحول كما ذكر وأنثى حرف.
والسطر الثاني يطبع بنجاح جميع الشخصيات باستثناء THE LAST مفصولة سطر تغذية. طباعة رمز ذكر. يتم استبدال رمز أنثوية الطابع المفقود (مربع).
وأنا واثق من بيثون لا يقصد به أن يكون المتحيزة ضد المرأة، وذلك ما يعطي مع الفرق؟
المحلول
وهناك فرق في "طبع" ل "يمكن عرضها على الشاشة". تعرض المحطة الطرفية انخفاض رموز تحكم الطابعة أسكي 0x0B و0x0C كما الرموز من الذكور والإناث لأن هذا هو ما تحتوي هذه المؤشرات في الخط الخاص بك. ووصفت تلك الأحرف بشكل أكثر دقة مثل الجدوال عمودي وشخصيات تغذية النموذج. هاتين الشخصيتين، جنبا إلى جنب مع \ ر \ r و \ ن، كلها قابلة للطباعة، ولم محددة جيدا الأشياء على الطابعة.
نصائح أخرى
ومن داخل CMD.EXE:
>>> print '\x0b'
♂
>>> print '\x0c'
♀
>>> print '\f' # form feed
♀
>>> print '\v' # vertical tab
♂
>>>
وداخل إيماكس:
>>> print '\f\v'
^L^K
وفيما يلي مقتطفات من الأشكال rel="noreferrer"> ':
| Sequence | Character | Terminal Action | |----------+--------------+---------------------------------------------| | \f | form-feed | Moves the printing position to the initial | | | | printing position of the next logical page. | | \v | vertical-tab | Moves the printing position to the start of | | | | the next vertical tab position. If there | | | | are no more vertical tab positions left on | | | | the page, the behavior is undefined. |