পাইথনের কোনও স্ট্রিংয়ে কোনও ডাটা টাইপ কীভাবে পরিবর্তন করা যায়


135

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


10
str(var)? আপনি কি এটি খুঁজছেন?
সাইলেন্টগোস্ট

2
আপনি কি ডেটাতে মানব-পঠনযোগ্য স্ট্রিং প্রতিনিধিত্ব চান? অথবা আপনি কি ডেটাযুক্ত মেমরির বাইট-ওরিয়েন্টেড ভিউ চান?
জেরেমি ব্রাউন 15

আপনি যে ডেটা পরিবর্তন করতে চান তা সম্পর্কে সতর্কতা অবলম্বন করুন। নীচের উত্তর দেখুন
পাইথনিক

উত্তর:


126
myvariable = 4
mystring = str(myvariable)  # '4'

এছাড়াও, বিকল্পভাবে repr চেষ্টা করুন:

mystring = repr(myvariable) # '4'

পাইথনে একে "রূপান্তর" বলা হয় এবং এটি বেশ সাধারণ common


6
আমি repr (myvariable) ব্যবহার করব না - এটি প্রায়শই ক্লাসের ধরণ, মেমরির ঠিকানা ইত্যাদি সম্পর্কিত তথ্য ফেরত দেয় এটি ডিবাগিংয়ের জন্য আরও কার্যকর। স্ট্রিং এবং ইউনিকোডে রূপান্তরকরণের জন্য ইউনিকোড (ভেরিয়েবল) এর জন্য str (মাইভেরিবেল) ব্যবহার করুন।
অ্যাবগান

2
ইউনিকোডের কী হবে? এমন কিছু str(u'ä')কাজ করবে না। তবে repr(u'ä')কাজ করবে।
রাউভেন বি।

1
না এবং মিথ্যা সম্পর্কে কি?
ফ্রেডলেস

54

strঅবজেক্টের ডেটার একটি স্ট্রিং প্রতিনিধিত্ব উত্পাদন বোঝানো হয়। আপনি যদি নিজের ক্লাস লিখছেন এবং আপনি আপনার strপক্ষে কাজ করতে চান তবে যুক্ত করুন:

def __str__(self):
    return "Some descriptive string"

print str(myObj)ডাকবে myObj.__str__()

reprএকটি অনুরূপ পদ্ধতি, যা সাধারণত শ্রেণীর তথ্য সম্পর্কিত তথ্য উত্পাদন করে। বেশিরভাগ মূল লাইব্রেরি অবজেক্টের জন্য, reprকোণ বন্ধনীগুলির মধ্যে শ্রেণীর নাম (এবং কিছু সময়ের কিছু শ্রেণির তথ্য) উত্পাদিত হয়। reprউদাহরণস্বরূপ, ব্যবহার না করা printবা অন্য কিছু ব্যবহার না করে কেবল আপনার মিথস্ক্রিয়া ফলকে আপনার বস্তুটি টাইপ করে anything

আপনি reprনিজের পদার্থের জন্য যেমন আচরণের সংজ্ঞা দিতে পারেন তেমন আচরণের সংজ্ঞা দিতে পারেন str:

def __repr__(self):
    return "Some descriptive string"

>>> myObjআপনার মিথস্ক্রিয়া ফলক বা repr(myObj), ফলস্বরূপ হবেmyObj.__repr__()


এটি সম্ভবত সত্য যে কাঁচা শতাংশের ভিত্তিতে কোর লাইব্রেরি অবজেক্টগুলির বেশিরভাগ object.__repr__স্টাইল এঙ্গেল-বন্ধনীর উপস্থাপনা ফেরত দেয় তবে বেশিরভাগ সর্বাধিক ব্যবহৃত ব্যবহৃত হয় না। জন্য চলতি রীতি reprকি যে যদি এটা জ্ঞান করে তোলে, পাইথন কোড যা একই বস্তুর উত্পাদন করতে মূল্যায়ন করা যেতে পারে ফেরত দিতে যে, ঠিক str, frozenset, এবং অন্যান্য অধিকাংশ builtins না, কিন্তু যদি এটা না, কোণ-বন্ধনী ব্যবহার আপনি যা ফিরে আসবেন তা সম্ভবত কোনও মানব-পঠনযোগ্য এবং মূল্যায়নযোগ্য-হিসাবে-উত্স repr এর জন্য ভুল হতে পারে না তা নিশ্চিত করার জন্য ফর্ম করুন।
অবার্নার্ট

(অবশ্যই কিছু বিল্টিনগুলি সেই থাম্বের বিধি লঙ্ঘন করে - listএতে নিজেকে অন্তর্ভুক্ত করে এমন কিছু দেয় যা কেবল দেখায় না তবে মূল্যায়নযোগ্য কোড যা ভুল বিষয়টিকে মূল্যায়ন করে — তবে মূল দেবগণ কখনই সেটিকে সম্প্রসারণের লাইসেন্স হিসাবে গ্রহণ করেন নি license stdlib এর সাথে আচরণ করুন))
অবার্নেট

19

আমি সমস্ত উত্তর ব্যবহার করার পরামর্শ দিচ্ছি str(object)। এটি ব্যর্থ হতে পারে যদি আপনার অবজেক্টে এসকিআই অক্ষর বেশি থাকে এবং আপনি এর মতো ত্রুটি দেখতে পাবেন ordinal not in range(128)। আমি যখন ইংরেজী ব্যতীত অন্য ভাষায় স্ট্রিংয়ের তালিকার রূপান্তর করছিলাম তখন আমার ক্ষেত্রে এটি ছিল

আমি এটি ব্যবহার করে সমাধান করেছি unicode(object)



13

str(object) কৌতুক করবে

আপনি যদি বিষয়টিকে স্ট্রিংফাই করা হয় সেভাবে পরিবর্তন করতে চান তবে __str__(self)অবজেক্টের শ্রেণির জন্য পদ্ধতিটি নির্ধারণ করুন । এই জাতীয় পদ্ধতিতে স্ট্র বা ইউনিকোড অবজেক্টটি ফিরে আসতে হবে।


কোন পদ্ধতিটি দক্ষ? str(any_var)বাany_var.__str__()
কেদার.এতাওয়াদেকার

@ Kedar.Aitawdekar: এমনকি যদি ফাঁসি সময় লক্ষণীয় পার্থক্য আছে (যা আমার সন্দেহ, কিন্তু আমি আপনাকে ব্যবহার করে এটি vefiry উত্সাহিত timeitমডিউল), আপনি ব্যবহার করা উচিত str(any_var)যেহেতু এটি ক্ষেত্রে থেকে মানুষের জন্য আরো পাঠযোগ্য এবং উপকার করতে পারবেন যখন any_varসংজ্ঞায়িত __repr__()কিন্তু ফেলে না ' টি সংজ্ঞায়িত __str__()
আবগন

আপনার উত্তর দেওয়ার জন্য ধন্যবাদ.
কেদার.আইতাউভাদেকার

12

strঅন্তর্নির্মিতটি ব্যবহার করুন :

x = str(something)

উদাহরণ:

>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'

...

ডকুমেন্টেশন থেকে:

কোনও স্ট্রিংটি প্রত্যাবর্তন করুন যাতে কোনও বস্তুর দুর্দান্ত মুদ্রণযোগ্য উপস্থাপনা থাকে। স্ট্রিংগুলির জন্য, এটি স্ট্রিংটি নিজেই দেয়। Repr (অবজেক্ট) এর সাথে পার্থক্য হ'ল str (অবজেক্ট) সর্বদা একটি স্ট্রিং ফেরত দেওয়ার চেষ্টা করে না যা eval () এর কাছে গ্রহণযোগ্য; এর লক্ষ্য হ'ল একটি মুদ্রণযোগ্য স্ট্রিং ফিরিয়ে দেওয়া। যদি কোনও যুক্তি না দেওয়া হয়, খালি স্ট্রিংটি ফিরিয়ে দেয়, ''।


5

সঙ্গে str(x)। যাইহোক, প্রতিটি ডেটা টাইপ তার নিজস্ব স্ট্রিং রূপান্তর সংজ্ঞায়িত করতে পারে, তাই এটি আপনি যা চান তা নাও হতে পারে।


3
এটি একটি গুরুত্বপূর্ণ তবে বিরল বিবেচনা। ভাল যে আপনি এটি উল্লেখ করেছেন।
জ্যাথানিজম

3

আপনি %sনীচের মত ব্যবহার করতে পারেন

>>> "%s" %([])
'[]'


0

বিন্যাস ব্যবহার করুন:

"%s" % (x)

উদাহরণ:

x = time.ctime(); str = "%s" % (x); print str

আউটপুট: আপনি 11 জানুয়ারী 20:40:05 2018


0

আপনি যদি সত্যিই ডেটা ধরণের "পরিবর্তন" করতে চান তবে সাবধান হন। অন্যান্য ক্ষেত্রে (উদাহরণস্বরূপ একটি forলুপে পুনরুক্তি পরিবর্তন ) এর ফলে এটি অপ্রত্যাশিত আচরণটি সামনে আনতে পারে:

>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.