मैं शून्य अक्षर ("\ x00") के साथ एक स्ट्रिंग पैड करना चाहता था। मुझे ऐसा करने के कई तरीके पता हैं, इसलिए कृपया विकल्पों के साथ जवाब न दें। मैं क्या जानना चाहता हूं: क्यों पाइथन का string.format()
फ़ंक्शन नल के साथ पैडिंग की अनुमति नहीं देता है?" x00" के साथ पाइथन का string.format पैड क्यों नहीं हो सकता है?
टेस्ट मामलों:
>>> "{0:\x01<10}".format("bbb")
'bbb\x01\x01\x01\x01\x01\x01\x01'
यह दिखाता है कि हेक्स-भाग निकले पात्रों सामान्य रूप में काम करते हैं।
>>> "{0:\x00<10}".format("bbb")
'bbb '
लेकिन "\ x00" एक स्थान ("\ x20") में बदल जाता है।
>>> "{0:{1}<10}".format("bbb","\x00")
'bbb '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb '
इसे करने के कुछ अन्य तरीकों की कोशिश भी कर रहा है।
>>> "bbb" + "\x00" * 7
'bbb\x00\x00\x00\x00\x00\x00\x00'
यह काम करता है, लेकिन string.format
>>> spaces = "{0: <10}".format("bbb")
>>> nulls = "{0:\x00<10}".format("bbb")
>>> spaces == nulls
True
अजगर स्पष्ट रूप से प्रतिस्थापन है रिक्त स्थान (chr(0x20)
) के बजाय nulls (chr(0x00)
) का उपयोग नहीं करता।
जब आप डाउनवोट करते हैं तो कृपया एक टिप्पणी छोड़ दें ताकि मैं इस प्रश्न को बेहतर बना सकूं। मैंने अपना शोध किया है और 'लचीला' और कार्य को पूरा करने के अन्य तरीकों के बारे में पता है। मैं जानना चाहता हूं कि क्यों पाइथन 2.7 इस तरह से व्यवहार करता है। – bonsaiviking
'प्रिंट "बीबीबी" + "\ x00" * 7' का प्रयोग करें और आपको 7 रिक्त स्थान के साथ एक स्ट्रिंग मिल जाएगी। शेल हमेशा एक स्पेस कैरेक्टर के रूप में "\ x00" प्रिंट करता है। प्रिंट खोल के बिना स्ट्रिंग का 'repr' संस्करण देता है। –