সমস্যা বিবরণ
একটি স্ট্রিং সিরিজ দেওয়া আছে। লক্ষ্য হলো যেসব ওয়ার্ডে একাধিক (বিশেষ করে ১টির বেশি) স্পেশাল ক্যারেক্টার (পাঙ্কচুয়েশন, সিম্বল ইত্যাদি) আছে, সেগুলোর মোট সংখ্যা গণনা করা।
ইনপুট সিরিজ
0 fruits!!
1 *cakes*
2 $nuts
3 #drinks
সমাধান ১: লুপ ও পাঙ্কচুয়েশন লিস্ট ব্যবহার করে
import pandas as pd
import string
l = ["Fruits!!", "*Cakes*", "$Nuts", "#Drinks"]
data = pd.Series(l)
chars = string.punctuation # সব পাঙ্কচুয়েশন ক্যারেক্টার
special_char = list(chars)
total_count = 0
for i in data:
chars_count = 0
for j in list(i):
if j in special_char:
chars_count += 1
if chars_count > 1:
total_count += 1
print("একাধিক স্পেশাল ক্যারেক্টার বালা ওয়ার্ডের মোট সংখ্যা:", total_count)
সমাধান ২: রেগুলার এক্সপ্রেশন \W ও ল্যাম্বডা ফিল্টার (সংক্ষিপ্ত)
\W নন-ওয়ার্ড ক্যারেক্টার ম্যাচ করে (অক্ষর, সংখ্যা, আন্ডারস্কোর বাদে সব)।
import pandas as pd
import re
l = ["fruits!!", "*cakes*", "$nuts", "#drinks"]
data = pd.Series(l)
# ফিল্টার: যেসব স্ট্রিং-এ ১টির বেশি নন-ওয়ার্ড ক্যারেক্টার আছে
filtered = pd.Series(filter(lambda x: 1 < len(re.findall(r"\W", x)), l))
print("কাউন্ট:", len(filtered))
আউটপুট
একাধিক স্পেশাল ক্যারেক্টার বালা ওয়ার্ডের মোট সংখ্যা: 2
ব্যাখ্যা
- "fruits!!" → ২টি '!' → কাউন্ট হয়েছে ✅
- "*cakes*" → ২টি '*' → কাউন্ট হয়েছে ✅
- "$nuts" → ১টি '$' → কাউন্ট হয়নি ❌
- "#drinks" → ১টি '#' → কাউন্ট হয়নি ❌
মোট ২টি ওয়ার্ডে একাধিক স্পেশাল ক্যারেক্টার পাওয়া গেছে।