برای پروفایلِ ستونهای CSV،تعدادِ رکورد،مقدارِ خالی و مقدارِ فقطفاصله را جدا بشمارید. خطِ فیزیکیِ فایل الزاماً یک رکورد نیست؛ممکن است داخلِ فیلدِ نقلقولشده newlineوجود داشته باشد. کدِ محلیِ این راهنما یک نمونهٔ اصیلِ چهاررکوردی را میخواند و بدونِ تغییرِ متن،گزارشِ هر ستون را میدهد. هیچ دادهای به CRMوارد نمیشود.
چهار رکورد،شش خطِ فیزیکی
فایلِ ساختهشده سرستونهایid،noteوstatusدارد و باUTF-8وBOMآغاز میشود. یکnoteشاملِ ویرگول است،یکی دو خط دارد و دیگری نقلقولِ درونی دارد. parserبا قراردادِ مشخصِ commaوdoublequoteکار میکند؛به splitکردنِ متن روی ویرگول یا newlineاکتفا نمیکند.
در اجرایِ واقعی،پس از کنارگذاشتنِ سرستون،چهار رکورد داریم؛اما splitlinesروی متنِ decodeشده شش خط میبیند. شش،شمارِ رکوردهای داده نیست. این اختلاف را در گزارش کنارِ هم میگذاریم تا هنگامِ انتقال،ردیفِ چندخطی را تصادفاً دو درخواست حساب نکنیم. دادهها کاملاً آموزشیاند و به پروندهٔ واقعی تعلق ندارند.
خالی با فقطفاصله فرق دارد
در ستونِstatus،یک مقدار دقیقاً رشتهٔ خالی است،یک مقدار یکSPACEدارد و دو مقدارopenهستند. ابزار هیچ trimاجرا نمیکند. به همین دلیل empty_exactبرابر۱،whitespace_only_nonemptyبرابر۱وdistinct_exactبرابر۳است. اگر پیش از شمارش همهچیز را stripکنیم،این شاهد از بین میرود.
| ستون | خالیِ دقیق | فقطفاصلهٔ غیرخالی | متمایزِ دقیق |
|---|---|---|---|
| id | ۰ | ۰ | ۴ |
| note | ۱ | ۰ | ۴ |
| status | ۱ | ۱ | ۳ |
مخرجِ هر سه ستون،چهار رکورد است. اینها آمارِ همان نمونهاند؛نه میزانِ خطای همهٔ دادههای سازمان. distinctبر پایهٔ برابریِ رشتههاست و مترادف،اختلافِ نگارشی یا معنایِ کسبوکار را ادغام نمیکند.
طولِ کدام واحد گزارش میشود؟
max_codepointsبیشترین طولِ رشتهٔ همان ستون را با واحدِcodepointدرPythonمیدهد؛برایnoteبرابر۹است. این عدد نه تعدادِ بایتِUTF-8است،نه پهنایِ ستون در اکسل و نه تعدادِ نشانههای دیداریِ کاربر. وقتی برای مقصد سقفِ بایت دارید،این خانه بهتنهایی پاسخ نمیدهد.
idهای001تا004رشته میمانند؛ابزار از رقمبودن،نوعِ عددیِ قطعی نتیجه نمیگیرد. تشخیصِ نوع،تبدیلِ تاریخ،بررسیِ تلفن و جایگزینیِ خالی با صفر در این تمرین وجود ندارد. خروجی،شاهدِ مشاهده است تا مالکِ داده دربارهٔ قواعد تصمیم بگیرد.
سرستون و عرضِ رکورد را پنهان نکنیم
پیش از ساختِ گزارش،نامِ سرستونِ خالی یا فقطفاصله و نامِ دقیقاً تکراری رد میشود. رکوردِ کوتاهتر،بلندتر یا خطِ خالیِ مستقل هم طبقِ قراردادِ این نمونه پذیرفته نمیشود. استفادهٔ بیاعلان ازDictReaderمیتواند مقدارِ مفقود را پر یا خانهٔ اضافی را جدا کند؛ما این تصمیم را به خواننده پنهان نمیکنیم.
هفت نمونهٔ منفی واقعاً اجرا میشوند:سرستونِ تکراری،عنوانِ فقطفاصله،ردیفِ کوتاه،ردیفِ بلند،رکوردِ خالی،نقلقولِ بستهنشده وUTF-8خراب. فایلِ دارای فقطِ سرستون هم گزارشِ صفر رکورد میدهد؛بیشینهٔ طولِ ستونها در قراردادِ حاضر صفر است،نه یک مشاهدهٔ واقعی از دادهٔ مشتری.
سقف و حفظِ اصل
ورودیِ تمرین بایتِUTF-8با سقفِ۱۶کیبیبایت،حداکثر۱۰۰رکوردِ داده و۲۰ستون است؛طولِ هر مقدارِ داده تا۱۰۲۴codepointمحدود میشود. این حدود،انتخابِ همین ابزارِ کوچکاند. فایلهای بزرگ،dialectهای دیگر و پردازشِ جریانی در این آزمون پوشش داده نشدهاند.
هشِ بایتهای اصلی در خروجی میآید و ورودی پیش و پس برابر میماند. BOMفقط هنگامِ decodeبرایخواندن کنار میرود؛فایلِ مبدأ بازنویسی نمیشود. اجرا باPython۳٫۱۲٫۱۴وکتابخانهٔ استاندارد بوده؛هیچ شبکه،دادهٔ خصوصی یا ایمپورتِ واقعیِ CRMدر کار نیست.
گزارش را به تصمیمِ درست وصل کنیم
در چکلیستِ ورودِ CSVبهCRM،قراردادِ مقصد و تطبیقِ پس از ورود بررسی میشود؛اینجا خروجیِ محاسبهشدهٔ ستونها را داریم. حفظِ صفرِ اولِ شماره هم تصمیمِ نوع در مسیرِ انتقال را توضیح میدهد؛پروفایلِ ما آن تصمیم را خودکار نمیگیرد.
برای بررسیِ اتصال در راهکارهای اپرا،نمونهٔ مجاز و گزارشِ ستونها را همراهِ قواعدِ مطلوب مطرح کنید. ساختِ این فایل به معنیِ وجودِ پروفایلر در پنلِ محصول یا تأییدِ آمادهبودنِ فایل برای ثبت نیست؛گزارش کمک میکند سؤالِ مشخصتری از مسئولِ داده بپرسید.
فایل تمرین و منبع
کدِ کاملِ محلیِ تمرین و کنترلهایش · دادهٔ اصیل و نتیجهٔ اجرای واقعی؛ نویسههای کنترلی escape شدهاند
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.