আমি কীভাবে একটি ফাইল, স্টাড। টেক্সট খুলতে পারি এবং তারপরে "এ" এর যে কোনও উপস্থিতি "কমলা" দিয়ে প্রতিস্থাপন করব?
আমি কীভাবে একটি ফাইল, স্টাড। টেক্সট খুলতে পারি এবং তারপরে "এ" এর যে কোনও উপস্থিতি "কমলা" দিয়ে প্রতিস্থাপন করব?
উত্তর:
with open("Stud.txt", "rt") as fin:
with open("out.txt", "wt") as fout:
for line in fin:
fout.write(line.replace('A', 'Orange'))
আপনি যদি একই ফাইলে স্ট্রিংগুলি প্রতিস্থাপন করতে চান তবে আপনাকে সম্ভবত এটির বিষয়বস্তু স্থানীয় ভেরিয়েবলের মধ্যে পড়তে হবে, এটি বন্ধ করতে হবে এবং লেখার জন্য এটি আবার খুলতে হবে:
আমি এই উদাহরণে উইথ স্টেটমেন্টটি ব্যবহার করছি , যা with
ব্লকটি বন্ধ হওয়ার পরে ফাইলটি বন্ধ করে দেয় - সাধারণত যখন শেষ কমান্ডটি কার্যকর করা শেষ করে, বা কোনও ব্যতিক্রম দ্বারা।
def inplace_change(filename, old_string, new_string):
# Safely read the input filename using 'with'
with open(filename) as f:
s = f.read()
if old_string not in s:
print('"{old_string}" not found in {filename}.'.format(**locals()))
return
# Safely write the changed content, if found in the file
with open(filename, 'w') as f:
print('Changing "{old_string}" to "{new_string}" in {filename}'.format(**locals()))
s = s.replace(old_string, new_string)
f.write(s)
এটি উল্লেখ করার মতো যে যদি ফাইলের নামগুলি আলাদা হত তবে আমরা একটি with
বিবৃতি দিয়ে আরও মার্জিতভাবে এটি করতে পারতাম ।
#!/usr/bin/python
with open(FileName) as f:
newText=f.read().replace('A', 'Orange')
with open(FileName, "w") as f:
f.write(newText)
কিছুটা এইরকম
file = open('Stud.txt')
contents = file.read()
replaced_contents = contents.replace('A', 'Orange')
<do stuff with the result>
আপনি লিনাক্স উপর এবং মাত্র শব্দ প্রতিস্থাপন করতে চান dog
সঙ্গে cat
আপনি কি করতে পারেন:
পাঠ্য টেক্সট:
Hi, i am a dog and dog's are awesome, i love dogs! dog dog dogs!
লিনাক্স কমান্ড:
sed -i 's/dog/cat/g' test.txt
আউটপুট:
Hi, i am a cat and cat's are awesome, i love cats! cat cat cats!
আসল পোস্ট: /ubuntu/20414/find-and-replace-text-within-a-file- using-commands
পাথলিব ব্যবহার ( https://docs.python.org/3/library/pathlib.html )
from pathlib import Path
file = Path('Stud.txt')
file.write_text(file.read_text().replace('A', 'Orange'))
ইনপুট এবং আউটপুট ফাইলগুলি পৃথক হলে আপনি read_text
এবং এর জন্য দুটি পৃথক ভেরিয়েবল ব্যবহার করবেন write_text
।
আপনি যদি একটি একক প্রতিস্থাপনের চেয়ে আরও জটিল পরিবর্তন চান, আপনি তার ফলাফলটি read_text
একটি ভেরিয়েবলের জন্য বরাদ্দ করে , এটি প্রক্রিয়া করে এবং নতুন সামগ্রীটি অন্য ভেরিয়েবলে সংরক্ষণ করে এবং তারপরে নতুন সামগ্রীটি সংরক্ষণ করে write_text
।
যদি আপনার ফাইলটি বড় ছিল তবে আপনি এমন একটি পদ্ধতির পছন্দ করবেন যা পুরো ফাইলটিকে মেমরির মধ্যে না পড়ে, বরং গ্যার্থ ডেভিডসনের অন্য উত্তরে শো হিসাবে এটি লাইন ধরে প্রক্রিয়াকরণ করুন ( https://stackoverflow.com/a/4128192/3981273 ) , যা অবশ্যই ইনপুট এবং আউটপুট জন্য দুটি স্বতন্ত্র ফাইল ব্যবহার করা প্রয়োজন।
সবচেয়ে সহজ উপায় হ'ল নিয়মিত ভাবের সাথে এটি করা, ধরে নেওয়া যে আপনি যে ফাইলটি করছেন সেখানে প্রতিটি লাইন (যেখানে 'এ' সংরক্ষণ করা হবে) এর উপরে পুনরাবৃত্তি করতে চান ...
import re
input = file('C:\full_path\Stud.txt), 'r')
#when you try and write to a file with write permissions, it clears the file and writes only #what you tell it to the file. So we have to save the file first.
saved_input
for eachLine in input:
saved_input.append(eachLine)
#now we change entries with 'A' to 'Orange'
for i in range(0, len(old):
search = re.sub('A', 'Orange', saved_input[i])
if search is not None:
saved_input[i] = search
#now we open the file in write mode (clearing it) and writing saved_input back to it
input = file('C:\full_path\Stud.txt), 'w')
for each in saved_input:
input.write(each)