CSVCLEAN(1) csvkit CSVCLEAN(1)

csvclean - گزارش و اصلاح خطاهای رایج در یک فایل CSV

خطاهای رایج در یک فایل CSV را گزارش داده و برطرف می‌کند.

  • گزارش ردیف‌هایی که تعداد ستون‌های آن‌ها با ردیف هدر متفاوت است، در صورتی که گزینه --length-mismatch تنظیم شده باشد.
  • گزارش ستون‌های خالی، در صورتی که گزینه --empty-columns تنظیم شده باشد.

نکته:

فعال‌سازی همه بررسی‌ها با --enable-all-checks (-a).

•
اگر یک فایل CSV دارای سلول‌های فاقد نقل‌قول باشد که حاوی شکست خط (انتقال به خط بعد) هستند، مانند:
id,address,country
1,1 Main St
Springfield,US
2,123 Acadia Avenue
London,GB

از --join-short-rows برای تلاش جهت اصلاح خطاها از طریق ادغام ردیف‌های کوتاه در یک ردیف استفاده کنید:

id,address,country
1,"1 Main St
Springfield",US
2,"123 Acadia Avenue
London",GB

برای تغییر رشته مورد استفاده جهت پیوند دادن خطوط، از --separator استفاده کنید. برای مثال با --separator ", ":

id,address,country
1,"1 Main St, Springfield",US
2,"123 Acadia Avenue, London",GB
•
اگر یک فایل CSV دارای جداکننده‌های ناموجود باشد، مانند:
id,name,country
1,Alice
2,Bob,CA

می‌توانید جداکننده‌های مفقود را با --fill-short-rows اضافه کنید:

id,name,country
1,Alice,
2,Bob,CA

نکته:

دستور csvcut بدون هیچ گزینه‌ای نیز جداکننده‌های مفقود را اضافه می‌کند!

برای تغییر مقداری که برای پر کردن ردیف‌های کوتاه استفاده می‌شود، از --fillvalue استفاده کنید. برای مثال با --fillvalue "US":

id,name,country
1,Alice,US
2,Bob,CA

همچنین ببینید:

گزینه --header-normalize-space در بخش نحوه استفاده (Usage).

توجه:

هر ابزار در مجموعه csvkit موارد زیر را انجام می‌دهد:
  • کاراکترهای نقل‌قول اختیاری را حذف می‌کند، مگر اینکه گزینه --quoting (-u) برای تغییر این رفتار تنظیم شده باشد
  • جداکننده فیلدها را به کاما تغییر می‌دهد، در صورتی که جداکننده ورودی با گزینه‌های --delimiter (-d) یا --tabs (-t) مشخص شده باشد
  • جداکننده رکوردها را به LF (یا \n) تغییر می‌دهد
  • کاراکتر نقل‌قول را به گیومه دوتایی (double-quotation mark) تغییر می‌دهد، در صورتی که کاراکتر با گزینه --quotechar (-q) تعیین شده باشد
  • رمزگذاری کاراکترها را به UTF-8 تغییر می‌دهد، در صورتی که رمزگذاری ورودی با گزینه --encoding (-e) تنظیم شده باشد

برنامه csvclean تلاش می‌کند اصلاحات انتخاب‌شده را اعمال کند. سپس:

  • اگر گزینه --omit-error-rows تنظیم شده باشد، فقط ردیف‌هایی که از بررسی‌های انتخاب‌شده عبور کرده‌اند در خروجی استاندارد نوشته می‌شوند. در غیر این صورت، تمام ردیف‌ها در خروجی استاندارد نوشته خواهند شد.
  • اگر هرگونه بررسی فعال باشد، ردیف‌های دارای خطا به همراه شماره خط و توضیحات در خطای استاندارد (stderr) نوشته می‌شوند. در صورت وجود ردیف‌های خطا، کد خروج ۱ خواهد بود.

usage: csvclean [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
                [-p ESCAPECHAR] [-z FIELD_SIZE_LIMIT] [-e ENCODING] [-S] [-H]
                [-K SKIP_LINES] [-v] [-l] [--zero] [-V]
                [FILE]
Fix common errors in a CSV file.
positional arguments:
  FILE                  The CSV file to operate on. If omitted, will accept
                        input as piped data via STDIN.
optional arguments:
  -h, --help            show this help message and exit
  --length-mismatch     Report data rows that are shorter or longer than the
                        header row.
  --empty-columns       Report empty columns as errors.
  -a, --enable-all-checks
                        Enable all error reporting.
  --omit-error-rows     Omit data rows that contain errors, from standard
                        output.
  --label LABEL         Add a "label" column to standard error. Useful in
                        automated workflows. Use "-" to default to the input
                        filename.
  --header-normalize-space
                        Strip leading and trailing whitespace and replace
                        sequences of whitespace characters by a single space
                        in the header.
  --join-short-rows     Merges short rows into a single row.
  --separator SEPARATOR
                        The string with which to join short rows. Defaults to
                        a newline.
  --fill-short-rows     Fill short rows with the missing cells.
  --fillvalue FILLVALUE
                        The value with which to fill short rows. Defaults to
                        none.

همچنین ببینید: آرگومان‌های مشترک میان تمام ابزارها.

آزمودن فایلی با ردیف‌های داده‌ای که کوتاه‌تر و بلندتر از ردیف هدر هستند:

$ csvclean examples/bad.csv 2> errors.csv
column_a,column_b,column_c
0,mixed types.... uh oh,17
$ cat errors.csv
line_number,msg,column_a,column_b,column_c
1,"Expected 3 columns, found 4 columns",1,27,,I'm too long!
2,"Expected 3 columns, found 2 columns",,I'm too short!

توجه:

اگر هر یک از ردیف‌های داده طولانی‌تر از ردیف هدر باشند، باید ستون‌ها را به‌صورت دستی اضافه کنید؛ برای مثال با افزودن یک یا چند جداکننده (,) به انتهای ردیف هدر. برنامه csvclean نمی‌تواند این کار را انجام دهد، زیرا برای کار با ورودی استاندارد طراحی شده است، و اصلاح خطا در ابتدای داده‌های CSV بر اساس مشاهده‌ای در ادامه داده‌ها نیازمند نگه داشتن تمام داده‌های CSV در حافظه است – که این روش برای فایل‌های حجیم امکان‌پذیر نیست.

آزمودن فایلی با ستون‌های خالی:

$ csvclean --empty-columns examples/test_empty_columns.csv 2> errors.csv
a,b,c,,
a,,,,
,,c,,
,,,,
$ cat errors.csv
line_number,msg,a,b,c,,
1,"Empty columns named 'b', '', ''! Try: csvcut -C 2,4,5",,,,,

استفاده از csvcut برای مستثنی کردن ستون‌های خالی:

$ csvcut -C 2,4,5 examples/test_empty_columns.csv
a,c
a,
,c
,

برای تغییر پایان خط از LF (یا \n) به CRLF (یا \r\n) از دستور زیر استفاده کنید:

csvformat -M $'\r\n' examples/dummy.csv

Christopher Groskopf و مشارکت‌کنندگان

2016, Christopher Groskopf and James McKinney

16 اوت 2024 2.2.0