पायथन में एक स्ट्रिंग का आकार कैसे प्राप्त करें?


157

उदाहरण के लिए, मुझे एक स्ट्रिंग मिलती है:

str = "please answer my question"

मैं इसे एक फाइल पर लिखना चाहता हूं।

लेकिन मुझे फ़ाइल को स्ट्रिंग लिखने से पहले स्ट्रिंग का आकार जानना होगा। स्ट्रिंग के आकार की गणना करने के लिए मैं किस फ़ंक्शन का उपयोग कर सकता हूं?


1
"स्ट्रिंग के आकार की गणना करने के लिए मैं किस फ़ंक्शन का उपयोग कर सकता हूं"? आप पायथन सीखने के लिए किस ट्यूटोरियल का उपयोग कर रहे हैं? कृपया कुछ जानकारी के साथ प्रश्न को अपडेट करें कि आप पायथन को कहाँ और कैसे सीख रहे हैं।
S.Lott

1
मैं अपने आप से अजगर सीखता हूं, अब मुझे पता है कि लेन (str) स्ट्रिंग के आकार को वापस कर सकती है, आकार str के कोडिंग पर निर्भर करता है।
15

जवाबों:


258

यदि आप स्ट्रिंग की लंबाई के बारे में बात कर रहे हैं, तो आप इसका उपयोग कर सकते हैं len():

>>> s = 'please answer my question'
>>> len(s)  # number of characters in s
25

यदि आपको बाइट्स में स्ट्रिंग का आकार चाहिए, तो आपको चाहिए sys.getsizeof():

>>> import sys
>>> sys.getsizeof(s)
58

इसके अलावा, अपने स्ट्रिंग चर को मत बुलाओ str। यह अंतर्निहित str()फ़ंक्शन को छाया देता है।


33
sys.getsizeofबाइट्स की संख्या को वापस करता है पाइथन ऑब्जेक्ट मेमोरी में रहता है। यह किसी भी परिस्थिति में फ़ाइल में लिखने के लिए उपयोगी नहीं है।
डंकन

धन्यवाद, लेकिन sys.getsizeof (s) केवल फ़ाइल का आकार है? या अजगर के आकार की वस्तु?
बच्ची

@ डंकन तो कैसे के बजाय उपयोगी होने जा रहा है सुझाव के बारे में कैसे?
क्रिष्णुभू

4
@cryanbhu मुझे नहीं पता कि ओपी आकार क्यों चाहता था और इससे उत्तर प्रभावित होगा, लेकिन संभवत: सबसे उपयोगी होगा len(s.encode('utf8'))या फ़ाइल को लिखते समय जो भी अन्य एन्कोडिंग का उपयोग होने वाला है। इसके अलावा, अगर वे भी एक शून्य समाप्त करना चाहते हैं तो उन्हें इसके लिए 1 जोड़ना होगा।
डंकन

33

अजगर 3:

user225312 का उत्तर सही है:

A.str ऑब्जेक्ट में वर्णों की संख्या की गणना करने के लिए , आप len()फ़ंक्शन का उपयोग कर सकते हैं :

>>> print(len('please anwser my question'))
25

B.str ऑब्जेक्ट को स्टोर करने के लिए आवंटित बाइट्स में मेमोरी का आकार प्राप्त करने के लिए , आप sys.getsizeof()फ़ंक्शन का उपयोग कर सकते हैं

>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50

अजगर 2:

यह पायथन 2 के लिए जटिल हो जाता है।

len() अजगर में समारोह 2 रिटर्न की दुकान के लिए आवंटित बाइट्स की गिनती पात्रों इनकोडिंग एक में strवस्तु।

कभी-कभी यह वर्ण गणना के बराबर होगा:

>>> print(len('abc'))
3

लेकिन कभी-कभी, यह नहीं होगा:

>>> print(len('йцы'))  # String contains Cyrillic symbols
6

ऐसा इसलिए है क्योंकि आंतरिक रूप से चर-लंबाई एन्कोडिंग काstr उपयोग कर सकते हैं । इसलिए, आप में वर्णों को गिनने के लिए पता होना चाहिए कि आपकी वस्तु का कौन सा एन्कोडिंग उपयोग कर रहा है। फिर आप इसे ऑब्जेक्ट में बदल सकते हैं और कैरेक्टर काउंट प्राप्त कर सकते हैं :strstrunicode

>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols 
3

बीsys.getsizeof()फ़ंक्शन पायथन 3 के रूप में एक ही काम करता है - यह पूरे स्ट्रिंग ऑब्जेक्ट को संग्रहीत करने के लिए आवंटित बाइट्स की गिनती देता है

>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32



1

सबसे पायथोनिक तरीका उपयोग करने के लिए है len()। ध्यान रखें कि एग्जिट सीक्वेंस में '\' कैरेक्टर को गिना नहीं जाता है और सही तरीके से इस्तेमाल न किया जाए तो यह खतरनाक हो सकता है।

>>> len('foo')
3
>>> len('\foo')
3
>>> len('\xoo')
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.