حذف کلمات تکراری فایل با پایتون
تصور کنید یک فایل متنی با پسوندهای رایج مثل txt دارید و در هر خط آن یک کلمه است و این فایل دارای خطهای زیادی از متن است و شما نیاز دارید کلمات تکراری را در این فایل حذف کنید؛ اینجاست که به صورت معقول امکان حذف کلمات تکراری به صورت دستی نیست و البته میتوانید اینکار را انجام دهید ولی کمی زمانبر است. وقتی زبانهای برنامه بنویسی به میان آمدند و کامپیوترها به زندگی ما ورود کردند قرار است کارهای ما را سادهتر کنند نه اینکه کارهای ساده را پیچیدهتر کنند. در این نوشته به بررسی نحوهی حذف کلمات تکراری در یک فایل متنی با کمک زبان برنامه نویسی پایتون میپردازیم.
پیشنهاد نویسنده: معرفی فریمورکهای پایتون
حذف کلمات تکراری فایل با پایتون
برای این کار از تکه برنامهی زیر استفاده کنید تا به سادگی امکان حذف این کلمات تکراری ایجاد شود:
fname = "input.txt"
fhand = open(fname)
AllWords = list()
ResultList = list()
for line in fhand:
line.rstrip()
words = line.split()
AllWords.extend(words)
AllWords.sort()
for word in AllWords:
if word not in ResultList:
ResultList.append(word)
with open('output.txt', 'w') as filehandle:
for listitem in ResultList:
filehandle.write('%s\n' % listitem)
print(ResultList)
در کد بالا ابتدا متنها از یک فایل ورودی با نام input.txt خوانده میشود در یک حلقه تمام کلمات بررسی میشود و کلمات تکراری حذف شده و یک لیست یا آرایه از کلمات unique یا یکتا باقی میماند که در فایل output.txt مینویسد.
حذف جملات تکراری در فایل با کمک پایتون
اگر نیاز به حذف جملات تکراری دارید نیز میتوانید از کد زیر استفاده کنید:
lines_seen = set() # holds lines already seen
with open("output.txt", "w") as output_file:
for each_line in open("input.txt", "r"):
if each_line not in lines_seen: # check if line is not duplicate
output_file.write(each_line)
lines_seen.add(each_line)
اگر روشهای بهتری برای انجام اینکار در اختیار دارید در بخش نظرات همین نوشته آن را برای ما بنویسید تا با دیگران به اشتراک بگذاریم.



















این کد با کاراکترهای خاص و علائم نگارشی هم درست عمل میکنه یا نیاز به پردازش جداگانه داریم؟
این کد کلمات را به صورت دقیق همانطور که در فایل هستند پردازش میکند. برای کاراکترهای خاص و علائم نگارشی، نیاز به پردازش جداگانه خواهید داشت.
آیا میشه کاری کرد که ترتیب اصلی کلمات در فایل حفظ بشه و فقط تکراریها حذف بشن؟
بله، با کمی تغییر در کد اول میتوان ترتیب اصلی کلمات را حفظ کرد و فقط موارد تکراری را حذف نمود.
اگر فایل ورودی شامل متن فارسی باشه هم همین روش کار میکنه؟
بله، این روش برای متن فارسی هم کار میکند، اما ممکن است نیاز به تنظیمات بیشتری برای پردازش صحیح کاراکترهای فارسی داشته باشید.
این کدی که گذاشتید برای فایلهای خیلی بزرگ هم جواب میده یا محدودیت حافظه داره؟
کد ارائه شده برای فایلهای با حجم متوسط مناسب است، اما برای فایلهای بسیار بزرگ ممکن است محدودیت حافظه داشته باشد. برای فایلهای حجیمتر، روشهای بهینهتری وجود دارد که در صورت نیاز میتوان به آنها اشاره کرد.
مورد دومی رو نتونستم وارد کنم برای اینکه اون دنبال فایلی به همین نام میگرده درحالیکه چنین فایل در سیستمم موجود نیست من فقط برای وارد کردن حروف و حذف کپی کلمه بودم
باید نام فایل اول شما input.txt باشد و یک فایل خالی output.txt داشته باشید