ভূমিকা
একটি টাপল তালিকায় মিশ্র ডেটা (স্ট্রিং সংখ্যা এবং নন-নাম্বরিক স্ট্রিং) থাকতে পারে। সংখ্যাবোধক স্ট্রিংগুলোকে ফ্লোটে রূপান্তর করলে এবং নন-নাম্বরিকগুলোকে অপরিবর্তিত রেখে ডেটা প্রসেসিং করা যায়।
উদাহরণ কোড
my_list = [("45", "Jane"), ("11", "Will"), ("37.68", "86.78"), ("Rob", "89.90")]
print("The list is :")
print(my_list)
my_result = []
for tup in my_list:
temp_val = []
for elem in tup:
if elem.isalpha(): # শুধু অ্যালফাবেটিক ক্যারেক্টার হলে
temp_val.append(elem)
else:
temp_val.append(float(elem))
my_result.append((temp_val[0], temp_val[1]))
print("The float values are :")
print(my_result)
আউটপুট
The list is : [('45', 'Jane'), ('11', 'Will'), ('37.68', '86.78'), ('Rob', '89.90')]
The float values are : [(45.0, 'Jane'), (11.0, 'Will'), (37.68, 86.78), ('Rob', 89.9)]
ব্যাখ্যা
elem.isalpha()চেক করে এলিমেন্টটি শুধু অক্ষর দিয়ে গঠিত কিনা। "Jane", "Will", "Rob" → True।নাম্বারিক স্ট্রিং ("45", "37.68", "89.90") →
isalpha()False রিটার্ন করে, তাইfloat()দিয়ে কনভার্ট করা হয়।ফলাফলে টাপলগুলোতে সংখ্যা ফ্লোট হয়ে গেছে, টেক্সট অপরিবর্তিত।
সীমাবদ্ধতা ও উন্নতি
isalpha()নেগেটিভ সংখ্যা ("-10"), ডেসিমাল পয়েন্ট (".5"), বা সাইেন্টিফিক নোটেশন ("1e3") হ্যান্ডেল করে না (False রিটার্ন করবে, কিন্তুfloat()পার্স করতে পারবে)।বেটার পদ্ধতি:
try/exceptব্লক ব্যবহার করুন।
উন্নত সংস্করণ (try/except)
def try_float(val):
try:
return float(val)
except ValueError:
return val
my_result = [tuple(try_float(e) for e in tup) for tup in my_list]
print(my_result)
# [(45.0, 'Jane'), (11.0, 'Will'), (37.68, 86.78), ('Rob', 89.9)]
এটি সব ধরনের নাম্বারিক স্ট্রিং হ্যান্ডেল করে।