উত্তর:
স্ট্রিংকাউন্ট (উপ [, শুরু [, শেষ]]]
subপরিসরে সাবস্ট্রিংয়ের অ-ওভারল্যাপিং সংঘটনগুলির সংখ্যাটি প্রদান করুন[start, end]। Alচ্ছিক যুক্তিগুলিstartএবংendস্লাইস নোটেশন হিসাবে ব্যাখ্যা করা হয়।
>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4
হিসাবে অন্যান্য উত্তর বললেন, স্ট্রিং পদ্ধতি COUNT (ব্যবহার) সম্ভবত সবচেয়ে সহজ, কিন্তু যদি এই ঘন ঘন করছি, খুঁজে বার করো collections.Counter :
from collections import Counter
my_str = "Mary had a little lamb"
counter = Counter(my_str)
print counter['a']
নিয়মিত প্রকাশ হতে পারে?
import re
my_string = "Mary had a little lamb"
len(re.findall("a", my_string))
len(re.findall('1',bin(10)))
myString.count('a');
আরও তথ্য এখানে
পাইথন-3.x:
"aabc".count("a")
স্ট্রিংকাউন্ট (উপ [, শুরু [, শেষ]]]
পরিসরে সাবস্ট্রিং সাব-অ-ওভারল্যাপিং সংঘটনগুলির সংখ্যা [শুরু, শেষ] সরিয়ে দিন। Ptionচ্ছিক আর্গুমেন্ট শুরু এবং শেষটি স্লাইস নোটেশনের মতো ব্যাখ্যা করা হয়।
str.count(a)একটি স্ট্রিংয়ের মধ্যে একটি একক অক্ষর গণনা করার সেরা সমাধান। তবে যদি আপনাকে আরও অক্ষর গণনা করতে হয় তবে আপনাকে পুরো স্ট্রিংটি পড়তে হবে যতগুলি অক্ষর গণনা করতে চান ততবার।
এই কাজের জন্য আরও ভাল পন্থা হবে:
from collections import defaultdict
text = 'Mary had a little lamb'
chars = defaultdict(int)
for char in text:
chars[char] += 1
সুতরাং আপনার কাছে একটি ডিক থাকবে যা স্ট্রিংয়ের প্রতিটি বর্ণের সংখ্যার পরিমাণ প্রদান করে এবং 0যদি এটি উপস্থিত না থাকে।
>>>chars['a']
4
>>>chars['x']
0
কোনও ক্ষেত্রে সংবেদনশীল কাউন্টারের জন্য আপনি সাবক্লাসিংয়ের মাধ্যমে মিউটরেটার এবং অ্যাকসেসর পদ্ধতিগুলিকে ওভাররাইড করতে পারেন defaultdict(বেস ক্লাসগুলি কেবল পঠনযোগ্য):
class CICounter(defaultdict):
def __getitem__(self, k):
return super().__getitem__(k.lower())
def __setitem__(self, k, v):
super().__setitem__(k.lower(), v)
chars = CICounter(int)
for char in text:
chars[char] += 1
>>>chars['a']
4
>>>chars['M']
2
>>>chars['x']
0
Counter, যা ইতিমধ্যে একটি শ্রেণিতে রয়েছে collections।
Counterআরো স্ফীত বিশুদ্ধ পাইথন ক্লাস হয় এবং defaultdictএর __missing__হয় সি লিখিত । এর মতো সাধারণ কাজের জন্য ( intসি তেও প্রয়োগ করা হয়) এই পদ্ধতিটি দ্রুততর দ্রুত হয়।
এই সহজ এবং সরাসরি এগিয়ে ফাংশন সাহায্য করতে পারে:
def check_freq(x):
freq = {}
for c in x:
freq[c] = str.count(c)
return freq
check_freq("abbabcbdbabdbdbabababcbcbab")
{'a': 7, 'b': 14, 'c': 3, 'd': 3}
str। আপনি যদি ভেরিয়েবলটির নাম দেন তবে strকোনও বিল্ট-ইন টাইপ নয়। এছাড়াও আপনি চৌদ্দ বি এর চৌদ্দ বার গণনা করছেন। আপনি যে এড়াতে পারেন কেবল পরিবর্তন করে for c in textসঙ্গে for c in set(text)।
নিয়মিত প্রকাশগুলি খুব কার্যকর যদি আপনি কেস-সংবেদনশীলতা চান (এবং অবশ্যই রেজেসের সমস্ত শক্তি) চান।
my_string = "Mary had a little lamb"
# simplest solution, using count, is case-sensitive
my_string.count("m") # yields 1
import re
# case-sensitive with regex
len(re.findall("m", my_string))
# three ways to get case insensitivity - all yield 2
len(re.findall("(?i)m", my_string))
len(re.findall("m|M", my_string))
len(re.findall(re.compile("m",re.IGNORECASE), my_string))
সচেতন থাকুন যে রেজেক্স সংস্করণটি দশ মিনিটের ক্রম হিসাবে চালিত হতে চলেছে, এটি সম্ভবত তখনই সমস্যা হয়ে দাঁড়াবে যদি মাই_স্ট্রিংটি অত্যন্ত দীর্ঘ হয়, বা কোডটি একটি গভীর লুপের অভ্যন্তরে থাকে।
a = 'have a nice day'
symbol = 'abcdefghijklmnopqrstuvwxyz'
for key in symbol:
print key, a.count(key)
ব্যবহার না করেই সব চরিত্র গন্য পেতে একটি বিকল্প উপায় Counter(), countএবং Regex
counts_dict = {}
for c in list(sentence):
if c not in counts_dict:
counts_dict[c] = 0
counts_dict[c] += 1
for key, value in counts_dict.items():
print(key, value)
countএকটি স্ট্রিংয়ে কোনও চরিত্রের উপস্থিতি গণনা করার জন্য এটি অবশ্যই সবচেয়ে সংক্ষিপ্ত এবং দক্ষ উপায় তবে আমি lambdaএই জাতীয় কিছু ব্যবহার করে একটি সমাধান নিয়ে আসার চেষ্টা করেছি :
sentence = 'Mary had a little lamb'
sum(map(lambda x : 1 if 'a' in x else 0, sentence))
এর ফলস্বরূপ:
4
এছাড়াও এর আরও একটি সুবিধা হ'ল বাক্যটি যদি উপরের মতো একই অক্ষর সমেত সাব-স্ট্রিংগুলির তালিকা হয় তবে এটি ব্যবহারের কারণে সঠিক ফলাফল দেয় in। একবার দেখুন:
sentence = ['M', 'ar', 'y', 'had', 'a', 'little', 'l', 'am', 'b']
sum(map(lambda x : 1 if 'a' in x else 0, sentence))
এর ফলস্বরূপ:
4
তবে অবশ্যই এটি কেবল তখনই কাজ করবে যখন 'a'এই বিশেষ ক্ষেত্রে যেমন একক চরিত্রের উপস্থিতি পরীক্ষা করে।
"স্ট্রিংয়ে আপনি অক্ষর চান তা খুঁজে পেতে গণনা ব্যবহার না করে" পদ্ধতি।
import re
def count(s, ch):
pass
def main():
s = raw_input ("Enter strings what you like, for example, 'welcome': ")
ch = raw_input ("Enter you want count characters, but best result to find one character: " )
print ( len (re.findall ( ch, s ) ) )
main()
আমি বিশেষত value_counts()পদ্ধতিতে পান্ডাস গ্রন্থাগারের ভক্ত । আপনি আপনার স্ট্রিংয়ের প্রতিটি অক্ষরের উপস্থিতি গণনা করতে এটি ব্যবহার করতে পারেন:
>>> import pandas as pd
>>> phrase = "I love the pandas library and its `value_counts()` method"
>>> pd.Series(list(phrase)).value_counts()
8
a 5
e 4
t 4
o 3
n 3
s 3
d 3
l 3
u 2
i 2
r 2
v 2
` 2
h 2
p 1
b 1
I 1
m 1
( 1
y 1
_ 1
) 1
c 1
dtype: int64
spam = 'have a nice day'
var = 'd'
def count(spam, var):
found = 0
for key in spam:
if key == var:
found += 1
return found
count(spam, var)
print 'count %s is: %s ' %(var, count(spam, var))
পাইথন ঘ
এটি অর্জনের দুটি উপায়:
1) অন্তর্নির্মিত ফাংশন গণনা সহ ()
sentence = 'Mary had a little lamb'
print(sentence.count('a'))`
2) একটি ফাংশন ব্যবহার না করে
sentence = 'Mary had a little lamb'
count = 0
for i in sentence:
if i == "a":
count = count + 1
print(count)