পাইথন স্ট্রিং ফর্ম্যাটিংয়ে% s এবং% d এর মধ্যে পার্থক্য কী?


138

আমি কী বুঝতে পারি না %sএবং %dকী করে এবং কীভাবে তারা কাজ করে।

উত্তর:


185

তারা স্ট্র্যাটিং বিন্যাসের জন্য ব্যবহৃত হয়। একটি সংখ্যার জন্য স্থানধারক হিসাবে কাজ করার %sসময় স্ট্রিংয়ের জন্য একটি স্থানধারককে %dকাজ করে। তাদের সম্পর্কিত মানগুলি %অপারেটরটি ব্যবহার করে একটি টুপলের মাধ্যমে প্রেরণ করা হয় ।

name = 'marcog'
number = 42
print '%s %d' % (name, number)

মুদ্রণ করবে marcog 42। মনে রাখবেন যে নামটি একটি স্ট্রিং (% s) এবং সংখ্যাটি পূর্ণসংখ্যা (দশমিকের জন্য% d)।

বিশদের জন্য https://docs.python.org/3/library/stdtyype.html#printf-style-string- ফর্ম্যাটিং দেখুন ।

পাইথন 3 এ উদাহরণটি হ'ল:

print('%s %d' % (name, number))

2
গুগল ক্রোমে: সেটিংস >> অনুসন্ধান >> অনুসন্ধান ইঞ্জিনগুলি পরিচালনা করুন ... লক্ষ্য করুন কীভাবে %sঅনুসন্ধান ইঞ্জিন কনফিগারেশনের সাহায্যে ব্যবহৃত হয়। ক্রোম %sঠিকানা বারে প্রবেশ করা কীওয়ার্ডগুলি প্রতিস্থাপন করতে ব্যবহার করে। পাইথন %sএকইভাবে ব্যবহার করে । ইন অপারেটর সঞ্চিত টেক্সট স্ট্রিং দ্বারা প্রতিস্থাপন করা হবে পরিবর্তনশীল। বৃত্তাকার ধনুর্বন্ধনী পাইথন 3print('description: %s' % descrip)%sdescrip
তে

আপনি এই% s,% d, ইত্যাদি কি বলবেন?
চেইন

1
@ চেইন তাদের স্থানধারক বলা হয়, তারা প্রতিস্থাপনযোগ্য পরিবর্তনশীল
লিও

@ লিও ধন্যবাদ!
চেইন

37

থেকে পাইথন 3 ডক

%d দশমিক পূর্ণসংখ্যার জন্য

%s জেনেরিক স্ট্রিং বা অবজেক্টের জন্য এবং অবজেক্টের ক্ষেত্রে এটি স্ট্রিংয়ে রূপান্তরিত হবে

নিম্নলিখিত কোড বিবেচনা করুন

name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))

আউট পুট হবে

গিয়াকোমো 4.3 4 4.300000 4.3

আপনি দেখতে পাচ্ছেন %dযে পূর্ণসংখ্যায় ছাঁটাই হবে, %sবিন্যাস বজায় রাখবে, %fভাসমান হিসাবে মুদ্রণ করবে এবং %gজেনেরিক সংখ্যার জন্য ব্যবহৃত হবে

স্পষ্টত

print('%d' % (name))

একটি ব্যতিক্রম উত্পন্ন করবে; আপনি স্ট্রিংকে সংখ্যায় রূপান্তর করতে পারবেন না


এটি আরও উঁচুতে প্রত্যাশিত। এটি ব্যাখ্যা করে যে %sপরিবর্তে কোনও সংখ্যার জন্য ব্যবহার করা হলে কী হবে ।
বিকাশ প্রসাদ

1
% D এবং% i এর মধ্যে পার্থক্য কী, যদি উভয়ই পূর্ণসংখ্যায় রূপান্তরিত হয়? % D কীভাবে% i এবং% f এর সাথে তুলনা করে?
শ্রীনি

34

%s স্ট্রিং মানগুলির জন্য একটি স্থানধারক হিসাবে ব্যবহৃত হয় আপনি কোনও ফর্ম্যাট স্ট্রিংয়ে ইনজেক্ট করতে চান।

%d সংখ্যাসূচক বা দশমিক মানগুলির জন্য স্থানধারক হিসাবে ব্যবহৃত হয়।

উদাহরণস্বরূপ (অজগর 3 এর জন্য)

print ('%s is %d years old' % ('Joe', 42))

আউটপুট হবে

Joe is 42 years old

6
আসলেই কি সমস্যার ব্যাখ্যা দেয় না? আমি সমস্যা ব্যাখ্যা করছি না, আমি একটি সংক্ষিপ্ত উত্তর প্রদান করছি করার প্রশ্ন। এই প্রশ্নটিতে বিশেষত জিজ্ঞাসা করা হয়েছিল যে% s এবং% d এর জন্য ছিল।
সোভিয়েট

2
আপনি% i এবং% d এর মধ্যে পার্থক্য জানেন? পাইথন% i সমর্থন করে?
cryanbhu

11

এগুলি স্থানধারক:

উদাহরণ স্বরূপ: 'Hi %s I have %d donuts' %('Alice', 42)

কোডের এই লাইনটি% s এর সাথে অ্যালিস (স্ট্র) এবং% d এর সাথে 42 করবে।

আউটপুট: 'Hi Alice I have 42 donuts'

এটি বেশিরভাগ সময় "+" দিয়ে অর্জন করা যেতে পারে। আপনার প্রশ্নের আরও গভীর ধারণা অর্জনের জন্য আপনি {} /। Formt () টিও পরীক্ষা করতে চাইতে পারেন। এখানে একটি উদাহরণ রয়েছে: পাইথন স্ট্রিং ফর্ম্যাটিং:% বনাম। ফর্ম্যাট

এছাড়াও এখানে একটি গুগল পাইথন টিউটোরিয়াল ভিডিও @ ৪০ 'দেখুন, এর কিছু ব্যাখ্যা https://www.youtube.com/watch?v=tKTZoB2Vjuk রয়েছে


10

%dএবং %sSTRING "কমান্ড" বিন্যাস বিন্যাস স্ট্রিং ব্যবহার করা হয়। %dসংখ্যার জন্য, এবং %sস্ট্রিং জন্য।

উদাহরণস্বরূপ:

print("%s" % "hi")

এবং

print("%d" % 34.6)

একাধিক যুক্তি পাস করতে:

print("%s %s %s%d" % ("hi", "there", "user", 123456)) ফিরে আসবে hi there user123456


9

এগুলি সমস্ত তথ্যবহুল উত্তর, তবে এর মধ্যে %sএবং কী পার্থক্য রয়েছে তার মূলে কিছুই পাওয়া যায় না %d

%sstr()আর্গুমেন্টটিতে ফাংশনটি কল করতে ফর্ম্যাটরটিকে বলে এবং যেহেতু আমরা সংজ্ঞা অনুসারে একটি স্ট্রিংকে জোর করে নিচ্ছি, %sমূলত কেবল সম্পাদন করা হচ্ছে str(arg)

%dঅন্যদিকে, কল int()করার আগে যুক্তিটি আহ্বান করা হচ্ছে str(), যেমন str(int(arg))এটি intজোর করে পাশাপাশি strজবরদস্তি সৃষ্টি করে।

উদাহরণস্বরূপ, আমি একটি হেক্স মানকে দশমিক হিসাবে রূপান্তর করতে পারি,

>>> '%d' % 0x15
'21'

বা একটি ভাসা কাটা।

>>> '%d' % 34.5
'34'

তর্কটি সংখ্যা না হলে অপারেশন ব্যতিক্রম বাড়িয়ে তুলবে।

>>> '%d' % 'thirteen'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str

সুতরাং যদি উদ্দেশ্যটি কেবল কল করতে হয় str(arg)তবে %sতা যথেষ্ট তবে আপনার যদি অতিরিক্ত ফরম্যাটিং (যেমন ফ্ল্যাট দশমিক জায়গাগুলি ফর্ম্যাট করা) বা অন্যান্য জবরদস্তির প্রয়োজন হয় তবে অন্যান্য বিন্যাসের চিহ্নগুলি প্রয়োজন।

সঙ্গে f-stringস্বরলিপি, যখন আপনি ফরম্যাটার ছেড়ে, ডিফল্ট str

>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'

একই সত্য string.format; ডিফল্ট হয় str

>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'

8

%dএবং %sস্থানধারক, তারা একটি পরিবর্তনযোগ্য পরিবর্তনশীল হিসাবে কাজ করে। উদাহরণস্বরূপ, আপনি যদি 2 ভেরিয়েবল তৈরি করেন

variable_one = "Stackoverflow"
variable_two = 45

আপনি ভেরিয়েবলগুলির একটি টিপল ব্যবহার করে স্ট্রিংয়ে একটি বাক্যে সেই পরিবর্তনশীলগুলি নির্ধারণ করতে পারেন।

variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"

নোট করুন যে %sস্ট্রিংয়ের জন্য %dকাজ করে এবং সংখ্যাসূচক বা দশমিক ভেরিয়েবলের জন্য কাজ করে।

আপনি যদি variable_3এটি মুদ্রণ করেন তবে এটি দেখতে এই রকম হবে

print(variable_3 % (variable_one, variable_two))

আমি স্ট্যাকওভারফ্লোতে একটি উত্তর খুঁজছিলাম এবং আমার প্রশ্নের 45 টিরও বেশি উত্তর পেয়েছি।


5

তারা ফর্ম্যাট নির্দিষ্টকরণকারী। এগুলি ব্যবহৃত হয় যখন আপনি আপনার পাইথন এক্সপ্রেশনগুলির মানকে স্ট্রিংয়ে অন্তর্ভুক্ত করতে চান, একটি নির্দিষ্ট বিন্যাস প্রয়োগ করে।

তুলনামূলকভাবে বিশদ পরিচয়ের জন্য পাইথনে ডুব দেখুন ।



2

আপনি যদি% s বা% d এড়াতে চান তবে ..

name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)

আউটপুট:

my name is marcog and my name is 42

2
এই প্রশ্নের প্রশ্নের সাথে কী সম্পর্ক আছে? প্রশ্নকারী %sএবং এর ব্যবহার সম্পর্কে জিজ্ঞাসা করছিল %d
মার্ক ডিকিনসন

বিটিডাব্লু, আপনি যে কোডটি দেখান তা পাইথন ৩.৩.১-তে অবৈধ: printপাইথন 3-তে একটি ফাংশন, বিবৃতি নয়।
মার্ক ডিকিনসন

আমি পোস্টটি সম্পাদনা করেছি ... দয়া করে এটি দেখুন। আসলে, আমি এটিকে বিকল্প হিসাবে পোস্ট করেছি..যদি কেউ% d বা% s ব্যবহার এড়াতে পারে। এবং ত্রুটি সনাক্তকরণের জন্য ধন্যবাদ, .. আমি কোডটি সম্পাদনা করেছি।
সুজাতা

3
সম্পাদনা করার জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে, এটি এখনও প্রশ্নের উত্তর নয়।
মার্ক ডিকিনসন

2

% s স্ট্রিং% d এর জন্য স্থান ধরে রাখতে ব্যবহৃত হয় সংখ্যার জন্য স্থান ধরে রাখতে

name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))

প্রোগ্রাম আউটপুট

এই ভিডিওটি সেই টিপটি সম্পর্কে গভীরভাবে যায় https://www.youtube.com/watch?v=4zN5YsuiqMA


স্ট্যাক ওভারফ্লোতে স্বাগতম! আপনার উত্তর অন্য 12 টির চেয়ে আলাদা কীভাবে?
ভাসিল ভেলিচকভ

প্রায় format ফর্ম্যাটগুলি একই কাজ করে তবে আমি চেয়েছিলাম আরও একটি উদাহরণ দেওয়া যাতে বোঝা আরও বাড়ানো যায়
নোয়েল মূসা মাওয়াদেন্দে

দারুণ! আপনি নিজের উত্তরটি উন্নত করতে পারেন কোনও প্রোগ্রাম হিসাবে আউটপুটটিকে একটি পাঠ্য হিসাবে নয় বরং কোনও চিত্র হিসাবে।
ভাসিল ভেলিচকভ

আপনার উদ্বেগের জন্য ধন্যবাদ, আমি কিছু পরিবর্তন করব, আপনি স্বাগত
নোয়েল মূসা মাওয়াদেন্দে

1

যার কথা বলতে ...
পাইথন 3.6 আসে f-stringsযা ফর্ম্যাটে জিনিসগুলিকে অনেক সহজ করে তোলে!
এখন যদি আপনার অজগর সংস্করণটি 6.6 এর বেশি হয় তবে আপনি এই উপলভ্য পদ্ধতিতে আপনার স্ট্রিংগুলিকে ফর্ম্যাট করতে পারেন:

name = "python"

print ("i code with %s" %name)          # with help of older method
print ("i code with {0}".format(name))  # with help of format
print (f"i code with {name}")           # with help of f-strings
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.