পাইথন স্ট্রিংগুলিতে আমি কীভাবে নির্বাচকভাবে শতাংশ (%) এড়াতে পারি?


363

আমার কাছে নিম্নলিখিত কোড রয়েছে

test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test

print(selectiveEscape)

আমি আউটপুট পেতে চাই:

Print percent % in sentence and not have it break.

আসলে কী ঘটে:

    selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str

57
কেন হয় না \%? এটি আমার অনুমান ছিল, আমি এর %%পরিবর্তে এটি খুঁজে পেয়ে অবাক হয়েছি - দেখে মনে হচ্ছে এটি বেশ খারাপ।
ডেমিস

3
% iমানে হলো "একটি পূর্ণসংখ্যা একটি দশমিক উপস্থাপনা, স্পেস অবশিষ্ট padded।
Antti Haapala

3
পালানো ভাষাটির বাক্য গঠন নয়, ফাংশনটিতে। সুতরাং যদি পালানো হয় \%তবে এটি আসলে \\%সাধারণ কোডে লেখা হয়। <escape><escape>আমি যে আদর্শ প্যাটার্নটি দেখেছি তা হ'ল \আরও ভাল বা আরও খারাপ হওয়ার জন্য, এটি সবচেয়ে সাধারণ পালানোর চরিত্র হিসাবে দেখা যায়।
শিমোন

1
@ ডেমিস এবং আপনি \ যদি প্রিন্ট করতে হয় তবে আপনি কীভাবে পালাতে পারবেন \\%? বিশেষ চরিত্রগুলি যদি পরিস্থিতির উপর নির্ভর করে বিশেষ না হয় তবে আপনাকে বিশেষ চরিত্রগুলির পুনরাবৃত্তি দিয়ে পালাতে হবে।
সাসা এনএফ

2
আমি পাইথনে এটি বিরক্তিকর বলে মনে করি যে আক্ষরিক% "%%" দ্বারা এনকোড করা হয়েছে এবং "\%" দ্বারা নয়।
মাস্টারকন্ট্রোল প্রোগ্রাম

উত্তর:


624
>>> test = "have it break."
>>> selectiveEscape = "Print percent %% in sentence and not %s" % test
>>> print selectiveEscape
Print percent % in sentence and not have it break.

38
পাইথন ৩.৩.৫ এ print('%s%%' % 100)মুদ্রণ করে 100%। তবে print('%%')প্রিন্ট %%। সুতরাং দেখে মনে হচ্ছে আপনি বিকল্পগুলি তৈরি না করলে আপনাকে% চিহ্নগুলি থেকে বাঁচতে হবে না।
জেনাডিক্স

5
@ জেনাডিক্স এটি পাইথন ২.7-এও সত্য
টম

2
নোট করুন যে %পদ্ধতিটি আসলে (পাইথন 3 এ) অবহিত করা হয়েছেstr.format() : docs.python.org/2/library/stdtypes.html#str.format
ড্যান্টিস্টন

8
দ্রষ্টব্য যে %পাইথন ৩.6-তে পদ্ধতিটি অবমূল্যায়ন করা হয়নি। এটি সি, সি ++ ইত্যাদির সাথে মিলে যাওয়ার পরিবর্তে সমর্থন অব্যাহত থাকবে str.format()এবং এফ-স্ট্রিংগুলি অগ্রাধিকার দেওয়া হয় তবে প্রয়োগ করা হয় না।
হারুন

কেবলমাত্র লক্ষ্য করেছেন যে যদি স্ট্রিংটি একটি জসন স্ট্রিং হয় তবে কোনও ফাইল থেকে পড়া আপনার এমনকি %চিহ্নটি থেকে বাঁচতে হবে না । কেবলমাত্র %করবেন
1917

57

বিকল্প হিসাবে, পাইথন ২.6 হিসাবে, আপনি নতুন স্ট্রিং ফর্ম্যাটিং ব্যবহার করতে পারেন ( পিইপি 3101 তে বর্ণিত ):

'Print percent % in sentence and not {0}'.format(test)

আপনার স্ট্রিং আরও জটিল হওয়ার সাথে সাথে এটি বিশেষত কার্যকর।


+1, যখন আমি অনুভব করেছি যে অপ%% ভিত্তিক উত্তর খুঁজছিল আমি formatএই দিনগুলিতে বেশি পছন্দ করি ।
নোলেন রয়্যালটি

2
আপনি কেবল যে পাঠ্যটি ফর্ম্যাট করতে চান তা হ'ল এইচটিএমএস হ'ল এটির সাথে একমাত্র সমস্যাটি হ'ল সিএসএস শৈলী বিভাগযুক্ত।
ব্রসফ

আপনি এইচটিএমএল পাঠ্য বিন্যাসের জন্য কী প্রস্তাব দিচ্ছেন যাতে একটি ব্রাউজ সিএসএস শৈলী বিভাগ রয়েছে?
DucRP

1
আমি ভৃল ছিলাম. আপনি যদি আপনার সিএসএসে ডাবল ধনুর্বন্ধনী ব্যবহার করেন তবে আপনি ভাল আছেন।
ব্রসফ

37

%%% চিহ্ন মুদ্রণ করতে ব্যবহার করার চেষ্টা করুন ।


5

আপনি নিম্নোক্ত চরিত্রের উপর নির্ভর করে সর্বদা একটি বিশেষ অর্থ %হিসাবে নির্বাচন করে বাঁচতে পারবেন না %

ইন ডকুমেন্টেশন Python- র, যে বিভাগে দ্বিতীয় টেবিলের bottem, এটি বলে:

'%'        No argument is converted, results in a '%' character in the result.

সুতরাং আপনার ব্যবহার করা উচিত:

selectiveEscape = "Print percent %% in sentence and not %s" % (test, )

(দয়া করে যুক্তি হিসাবে দ্বিগুণ করতে এক্সপিসিট পরিবর্তন নোট করুন %)

উপরের কথা না জেনে আমি করতাম:

selectiveEscape = "Print percent %s in sentence and not %s" % ('%', test)

জ্ঞান দিয়ে আপনি স্পষ্টত ইতিমধ্যে ছিল।


3

যদি ফর্ম্যাটিং টেম্পলেটটি কোনও ফাইল থেকে পড়ে থাকে এবং আপনি নিশ্চিত করতে পারবেন না যে বিষয়বস্তু শতাংশের চিহ্ন দ্বিগুণ করে, তবে আপনাকে সম্ভবত শতাংশের চরিত্রটি সনাক্ত করতে হবে এবং এটি কোনও স্থানধারকের শুরু কিনা তা প্রোগ্রামিকভাবে সিদ্ধান্ত নিতে হবে। তারপরে পার্সারেরও %d(এবং ব্যবহার করা যেতে পারে এমন অন্যান্য অক্ষর) এর মতো ক্রমগুলিও সনাক্ত করা উচিত %(xxx)setc.

নতুন ফর্ম্যাটগুলির সাথে একই ধরণের সমস্যা লক্ষ্য করা যায় - পাঠ্যে কোঁকড়ানো ধনুর্বন্ধনী থাকতে পারে।


1

আপনি যদি পাইথন ৩.6 বা ততোধিক নতুন ব্যবহার করেন তবে আপনি এফ স্ট্রিং ব্যবহার করতে পারেন :

>>> test = "have it break."
>>> selectiveEscape = f"Print percent % in sentence and not {test}"
>>> print(selectiveEscape)
... Print percent % in sentence and not have it break.

-3

সাবপ্লট শিরোনাম মুদ্রণের জন্য আমি বিভিন্ন পদ্ধতি চেষ্টা করেছি, দেখুন তারা কীভাবে কাজ করে। আমি যখন লেটেক্স ব্যবহার করি তখন এটি আলাদা।

এটি একটি সাধারণ ক্ষেত্রে '%%' এবং 'স্ট্রিং' + '%' দিয়ে কাজ করে।

আপনি যদি লেটেক্স ব্যবহার করেন তবে এটি 'স্ট্রিং' + '\%' ব্যবহার করে কাজ করেছে

একটি সাধারণ ক্ষেত্রে:

import matplotlib.pyplot as plt
fig,ax = plt.subplots(4,1)
float_number = 4.17
ax[0].set_title('Total: (%1.2f' %float_number + '\%)')
ax[1].set_title('Total: (%1.2f%%)' %float_number)
ax[2].set_title('Total: (%1.2f' %float_number + '%%)')
ax[3].set_title('Total: (%1.2f' %float_number + '%)')

% সহ শিরোনাম উদাহরণ

যদি আমরা ক্ষীর ব্যবহার করি:

import matplotlib.pyplot as plt
import matplotlib
font = {'family' : 'normal',
        'weight' : 'bold',
        'size'   : 12}
matplotlib.rc('font', **font)
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.unicode'] = True
fig,ax = plt.subplots(4,1)
float_number = 4.17
#ax[0].set_title('Total: (%1.2f\%)' %float_number) This makes python crash
ax[1].set_title('Total: (%1.2f%%)' %float_number)
ax[2].set_title('Total: (%1.2f' %float_number + '%%)')
ax[3].set_title('Total: (%1.2f' %float_number + '\%)')

আমরা এটি পেয়েছি : % এবং ক্ষীর সহ শিরোনামের উদাহরণ

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