পাইথনে স্ট্রিংয়ের আকার কীভাবে পাবেন?


157

উদাহরণস্বরূপ, আমি একটি স্ট্রিং পাই:

str = "please answer my question"

আমি এটি একটি ফাইলে লিখতে চাই।

তবে ফাইলটিতে স্ট্রিং লেখার আগে আমাকে স্ট্রিংয়ের আকারটি জানতে হবে। স্ট্রিংয়ের আকার গণনা করতে আমি কোন ফাংশন ব্যবহার করতে পারি?


1
"স্ট্রিংয়ের আকার গণনা করতে আমি কোন ফাংশন ব্যবহার করতে পারি"? পাইথন শিখতে আপনি কোন টিউটোরিয়াল ব্যবহার করছেন? দয়া করে আপডেট কোথায় এবং কিভাবে আপনি পাইথন শেখার করছি কিছু তথ্য দিয়ে প্রশ্ন।
এস .লট

1
আমি নিজেই অজগর শিখি, এখন আমি জানি লেন (স্ট্র) স্ট্রিংয়ের আকারটি ফিরিয়ে দিতে পারে, আকারটি স্ট্রিংয়ের কোডিংয়ের উপর নির্ভর করে।
শিশুকিক

উত্তর:


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 (গুলি) কেবলমাত্র ফাইলের আকার? বা পাইথন অবজেক্টের আকার?
বেবিকিক

@ ডানকান কীভাবে পরিবর্তে যা কার্যকর হবে তার পরামর্শ দেওয়ার বিষয়ে কীভাবে?
ক্রিণভু

4
@ ক্রিয়ানভূু আমি জানি না কেন ওপি আকারটি চেয়েছিল এবং এটি উত্তরটি প্রভাবিত করবে, তবে সম্ভবত সবচেয়ে দরকারী হবে len(s.encode('utf8'))বা অন্য যে কোনও এনকোডিং ফাইলটিতে লেখার সময় ব্যবহার করা হবে। এছাড়াও, তারা যদি একটি সমাপ্তি নালও চায় তবে তাদের জন্য তাদের জন্য 1 যুক্ত করতে হবে।
ডানকান

33

পাইথন 3:

user225312 এর উত্তর সঠিক:

উ:str অবজেক্টে অক্ষরের সংখ্যা গণনা করতে আপনি len()ফাংশনটি ব্যবহার করতে পারেন :

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

বি। স্টোরের জন্য বরাদ্দ করা বাইটগুলিতে মেমরির আকার পেতে 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.