আমি স্ট্রিংয়ের মধ্যে কীভাবে একটি পরিবর্তনশীল রাখব?


246

আমি একটি intমধ্যে লাগাতে চাই string। এই মুহুর্তে আমি এটি করছি:

num = 40
plot.savefig('hanning40.pdf') #problem line

আমাকে বিভিন্ন সংখ্যার জন্য প্রোগ্রামটি চালাতে হবে, তাই আমি একটি লুপ করতে চাই। তবে ভেরিয়েবলটি serোকানো এইভাবে কাজ করে না:

plot.savefig('hanning', num, '.pdf')

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

উত্তর:


163
plot.savefig('hanning(%d).pdf' % num)

%অপারেটর, যখন একটি স্ট্রিং নিম্নলিখিত, আপনি বিন্যাস কোড মাধ্যমে যে স্ট্রিং (মধ্যে মান সন্নিবেশ করতে পারেন %dএই ক্ষেত্রে)। আরও বিশদের জন্য পাইথন ডকুমেন্টেশন দেখুন:

https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting


39
দ্রষ্টব্য যে %অপারেটরটি পাইথন ৩.১ হিসাবে অবহিত করা হয়েছে। নতুন পছন্দসই উপায় হ'ল পিইপি 3101 তে.format() আলোচনা করা এবং ড্যান ম্যাকডুগলের উত্তরে উল্লিখিত পদ্ধতিটি ব্যবহার করা ।
ক্রিস মোলার 14

497

ওহ, অনেকগুলি, অনেক উপায়ে ...

স্ট্রিং সংযোগ:

plot.savefig('hanning' + str(num) + '.pdf')

রূপান্তর স্পেসিফায়ার:

plot.savefig('hanning%s.pdf' % num)

স্থানীয় চলক নাম ব্যবহার করে:

plot.savefig('hanning%(num)s.pdf' % locals()) # Neat trick

ব্যবহার str.format():

plot.savefig('hanning{0}.pdf'.format(num)) # Note: This is the new preferred way

এফ স্ট্রিং ব্যবহার:

plot.savefig(f'hanning{num}.pdf') # added in Python 3.6

ব্যবহার string.Template:

plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))

16
একাধিক আর্গুমেন্ট সহ ফরম্যাট স্ট্রিং অপারেটর ব্যবহার করতে, এক প্রতীক হিসেবে একটি tuple ব্যবহার করতে পারেন: 'foo %d, bar %d' % (foo, bar)
8:38

12
নতুন ফর্ম্যাটে সিনট্যাক্স সাথে কাজে ধরনের তোমার ঝরঝরে কৌতুক খুব:plot.savefig('hanning{num}s.pdf'.format(**locals()))
, pix

13
পাইথন ৩.6-এ এফ-স্ট্রিংগুলি প্রবর্তন করার সাথে সাথে এটি এখন লেখা যেতে পারে plot.savefig(f'hanning{num}.pdf')। আমি এই তথ্যের সাথে একটি উত্তর যুক্ত করেছি।
joelostblom

স্থানীয়দের () একটি বিশ্বব্যাপী ভেরিয়েবল কল করার জন্য স্থানীয়দের ব্যবহার করার সমস্যা ছিল; পরিবর্তে ব্যবহৃত% গ্লোবাল () যা কাজ করেছে
লবি

123

পাইথন ৩.6-এ বিন্যাসিত স্ট্রিং লিটারেলগুলি (সংক্ষেপে "এফ-স্ট্রিংস") প্রবর্তনের সাথে সাথে এটি এখন একটি ব্রিফার সিনট্যাক্স দিয়ে এটি লেখা সম্ভব:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

প্রশ্নে দেওয়া উদাহরণ সহ, এটি দেখতে এরকম হবে

plot.savefig(f'hanning{num}.pdf')


17

আপনার পোস্ট করা সমস্ত কোড ঠিক কী করে তা নিশ্চিত নয়, তবে শিরোনামে উত্থিত প্রশ্নের উত্তর দিতে আপনি স্ট্রিং (কনট) হিসাবে সাধারণ স্ট্রিং কনক্যাট ফাংশন হিসাবে + ব্যবহার করতে পারেন।

"hello " + str(10) + " world" = "hello 10 world"

আশা করি এইটি কাজ করবে!


6
যদিও এই উত্তরটি সঠিক বিল্ডিংয়ের স্ট্রিংগুলি +এটিকে অত্যন্ত ব্যয়বহুল হিসাবে এড়ানো উচিত
স্লেটন ২ton

6

সাধারণভাবে, আপনি ব্যবহার করে স্ট্রিং তৈরি করতে পারেন:

stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)

4

আপনি যদি স্ট্রিংয়ে একাধিক মান স্থাপন করতে চান তবে আপনি এটি ব্যবহার করতে পারেন format

nums = [1,2,3]
plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))

স্ট্রিং ফলাফল hanning123.pdf। এটি যে কোনও অ্যারে দিয়ে করা যায়।


3

আমার এর বর্ধিত সংস্করণটির প্রয়োজন ছিল: একটি স্ট্রিংয়ের মধ্যে একটি একক সংখ্যা এম্বেড করার পরিবর্তে, আমাকে 'file1.pdf', 'file2.pdf' ফর্মের বিভিন্ন ফাইলের নাম তৈরি করতে হবে This কাজ করছে:

['file' + str(i) + '.pdf' for i in range(1,4)]

-1

আপনাকে কেবল স্ট্রিং ব্যবহার করে নাম্বার ভেরিয়েবল কাস্ট করতে হবে

str(num)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.