টমাস ওয়াটনেডালের উত্তরের ভিত্তিতে। তবে এটি মূল প্রশ্নের লাইন-টু-লাইন অংশটির সঠিক উত্তর দেয় না। ফাংশনটি এখনও লাইন থেকে লাইনের ভিত্তিতে প্রতিস্থাপন করতে পারে
এই প্রয়োগটি অস্থায়ী ফাইলগুলি ব্যবহার না করেই ফাইল সামগ্রীগুলি প্রতিস্থাপন করে, ফলস্বরূপ ফাইলের অনুমতিগুলি অপরিবর্তিত থাকে।
এছাড়াও প্রতিস্থাপনের পরিবর্তে re.sub কেবল প্লেইন পাঠ্য প্রতিস্থাপনের পরিবর্তে রিজেক্স প্রতিস্থাপনের অনুমতি দেয়।
লাইন বাই লাইনের পরিবর্তে একক স্ট্রিং হিসাবে ফাইলটি পড়া মাল্টিলাইন ম্যাচ এবং প্রতিস্থাপনের অনুমতি দেয়।
import re
def replace(file, pattern, subst):
# Read contents from file as a single string
file_handle = open(file, 'r')
file_string = file_handle.read()
file_handle.close()
# Use RE package to allow for replacement (also allowing for (multiline) REGEX)
file_string = (re.sub(pattern, subst, file_string))
# Write contents to file.
# Using mode 'w' truncates the file.
file_handle = open(file, 'w')
file_handle.write(file_string)
file_handle.close()
file
একই নামের পূর্বনির্ধারিত শ্রেণীর ছায়া দিচ্ছে।