حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش کار با فایل در پایتون؛ CSV، JSON و گزارش‌گیری

نادیده گرفتن خط خالی فایل با strip در پایتون

خط‌های فایل و مسیرها در پایتون؛ داده خالی و فایل گم‌شده · 0٪

✍️ حالا خط‌هایی را می‌خواهیم که بعد از حذف فاصله‌های دو سر واقعاً محتوا دارند. این تعریف با «طول خط قبل از پاک‌سازی بیشتر از صفر» فرق دارد؛ خطی با چهار فاصله از نظر تعداد نویسه خالی نیست، اما از نظر این مسئله هیچ رکوردی ندارد. پس ترتیب دو کار مهم است: پاک‌سازی، سپس تصمیم.

مثلاً متن شامل « دفتر »، یک خط فقط‌فاصله و «مداد» باید دو رکورد مفید بدهد. در این فعالیت فقط تعداد را می‌خواهیم، نه خود متن‌های پاک‌شده. فایل نمونه از آرگومان ساخته می‌شود و همان لحظه خوانده می‌شود؛ تابع به فایل آماده یا تمرین قبلی وابسته نیست.

بخش ناقص حلقه را کامل کن. splitlines خط‌ها را می‌دهد و line.strip() تشخیص محتوای واقعی را آسان می‌کند. متن خالی یا فقط خط خالی نتیجه صفر دارد؛ آخرین پایان خط به‌تنهایی رکورد اضافه نمی‌کند. خطای رایج، استفاده از if line پیش از strip است؛ چنین شرطی رشته شامل فاصله را True می‌بیند. شمارنده را هم از صفر شروع کن تا در نبود هیچ خط معتبر، نتیجه درست بماند.

فعالیت شما

تابع count_nonempty_lines(text) رشته را در فایل موقت UTF-8 بنویسد و دوباره بخواند؛ تعداد خط‌هایی را بدهد که پس از strip خالی نیستند. پایان خط نهایی رکورد اضافه نیست؛ خط فقط‌فاصله نادیده گرفته شود. خالی 0؛ count_nonempty_lines(' دفتر \n \nمداد\n')=2. به هیچ فایل از قبل نیاز نباشد.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

import tempfile
from pathlib import Path

def count_nonempty_lines(text):
    with tempfile.TemporaryDirectory() as folder:
        path = Path(folder) / 'lines.txt'
        path.write_text(text, encoding='utf-8')
        count = 0
        for line in path.read_text(encoding='utf-8').splitlines():
            # TODO: count only meaningful lines
            pass
        return count