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

ساخت وبلاگ

این کلاس یک رابط کامل برای پرونده ها و داده های CSV ارائه می دهد. این ابزارهایی را برای شما فراهم می کند تا در صورت لزوم به خواندن و نوشتن آن از رشته ها یا اشیاء IO بپردازید.

عمومی ترین رابط کتابخانه:

CSV = CSV.جدید(String_or_io, **گزینه ها) # خواندن: شیء IO باید برای خواندن باز باشد CSV.خواندن # =>آرایه ای از ردیف ها # یا CSV.هر یک do |ردیف| # . پایان # یا ردیف = CSV.تغییر مکان # نوشتن: شیء IO باید برای نوشتن باز باشد CSV  ردیف 

چندین روش کلاس تخصصی برای خواندن یا نوشتن یک ایستگاه وجود دارد که در بخش روشهای تخصصی شرح داده شده است.

اگر یک رشته به :: جدید منتقل شود ، داخل آن به یک شیء Stringio پیچیده می شود.

از گزینه ها می توان برای مشخص کردن طعم خاص CSV (جداکننده های ستون ، جداکننده های ردیف ، نقل قول و غیره) استفاده کرد و برای تبدیل داده ها ، به بخش تبدیل داده ها برای توضیحات دوم مراجعه کنید.

روشهای تخصصی ¶

خواندن ¶

# از یک پرونده: همه به یکباره arr_of_rows = CSV.خواندن("مسیر/به/file. csv", **گزینه ها) # سبک تکراری: CSV.برای هر("مسیر/به/file. csv", **گزینه ها) do |ردیف| # . پایان # از یک رشته arr_of_rows = CSV.تجزیه کردن("CSV ، Data ، String", **گزینه ها) # یا CSV.تجزیه کردن("CSV ، Data ، String", **گزینه ها) do |ردیف| # . پایان 

نوشتن ¶

# به یک پرونده CSV.باز کن("مسیر/به/file. csv", "WB") do |CSV| CSV  ["ردیف", "از", "CSV", "داده ها"] CSV  ["یکی دیگر", "ردیف"] # . پایان # به یک رشته csv_string = CSV.تولید می کنند do |CSV| CSV  ["ردیف", "از", "CSV", "داده ها"] CSV  ["یکی دیگر", "ردیف"] # . پایان 

میانبرها ¶

# برنامه افزودنی اصلی برای تبدیل یک خط csv_string = ["CSV", "داده ها"].to_csv # به CSV csv_array = "CSV ، رشته".parse_csv # از CSV # روش CSV () CSV <|csv_out| csv_out  %w> # به $ stdout CSV(CSV = "") <|CSV_STR| CSV_STR  %w> # به یک رشته CSV($ stderr) <|csv_err| csv_err  %w> # به $ stderr CSV($ stdin) <|csv_in| csv_in.هر یک <|ردیف| p ردیف>> # از $ stdin 

تبدیل داده ¶

CSV با هدر ¶

CSV اجازه می دهد تا نام ستون پرونده CSV را ، چه در داده ها ، یا به طور جداگانه ارائه می دهد. اگر هدرهای مشخص شده ، روشهای خواندن نمونه ای از جدول CSV :: را شامل می شود ، متشکل از CSV :: Row.

# هدرها بخشی از داده ها هستند داده ها = CSV.تجزیه کردن(, هدرها: درست است، واقعی) نام ، بخش ، باب حقوق ، مهندسی ، 1000 جین ، فروش ، 2000 جان ، مدیریت ، 5000 ردیف داده ها.طبقه #=>CSV :: جدول داده ها.اولین #=> # داده ها.اولین.to_h #=> "Bob", "Department"=>"Engineering", "Salary"=>"1000"> # هدرهای ارائه شده توسط توسعه دهنده داده ها = CSV.تجزیه کردن("باب ، مهاربندی ، 1000", هدرها: ٪ من [نام بخش حقوق]) داده ها.اولین #=> #

خواندن داده های تایپ شده ¶

CSV اجازه می دهد مجموعه ای از مبدل های داده را به عنوان مثال ارائه دهد. تحولات برای امتحان کردن بر روی داده های ورودی. مبدل می تواند نمادی از CSV :: کلیدهای ثابت Converters یا Lambda باشد.

# بدون هیچ مبدل: CSV.تجزیه کردن("باب ، 2018-03-01،100") #=>["باب" ، "2018-03-01" ، "100"] # با مبدل های داخلی: CSV.تجزیه کردن("باب ، 2018-03-01،100", مبدل ها: ٪ من [تاریخ عددی]) #=>[["باب" ، #، 100]] # با مبدل های سفارشی: CSV.تجزیه کردن("باب ، 2018-03-01،100", مبدل ها: [>(v) <زمان.تجزیه کردن(v) نجات v>]) #=>[["باب" ، 2018-03-01 00:00:00 +0200 ، "100"] 

رمزگذاری CSV و شخصیت (M17N یا چند زبانه سازی) ¶

این تجزیه کننده CSV جدید M17N زرنگ است. تجزیه کننده در رمزگذاری IO یا شیء رشته ای که از آن خوانده شده یا نوشته شده است کار می کند. داده های شما هرگز به صورت رمزگذاری نشده (مگر اینکه از روبی بخواهید آن را برای شما رمزگذاری کند) و به معنای واقعی کلمه در رمزگذاری موجود در آن تجزیه می شود. بنابراین CSV آرایه ها یا ردیف های رشته های را در رمزگذاری داده های شما باز می گرداند. این کار با رمزگذاری خود تجزیه کننده در رمزگذاری شما انجام می شود.

البته برخی از رمزگذاری باید برای انجام این پشتیبانی چند جانبه انجام شود. به عنوان مثال ،: col_sep ،: row_sep ، و: quote_char باید برای مطابقت با داده های شما از کدگذاری استفاده شود. امیدوارم این امر باعث شود کل فرایند شفاف باشد ، زیرا پیش فرض های CSV فقط باید جادویی برای داده های شما کار کنند. با این حال ، شما می توانید این مقادیر را به صورت دستی در رمزگذاری هدف تنظیم کنید تا از ترجمه جلوگیری کنید.

توجه به این نکته نیز حائز اهمیت است که در حالی که همه تجزیه کننده اصلی CSV اکنون در حال رمزگذاری Agnostic است ، برخی از ویژگی ها اینگونه نیستند. به عنوان مثال ، مبدل های داخلی سعی می کنند قبل از انجام تبدیل ، داده ها را به UTF-8 تبدیل کنند. باز هم ، می توانید مبدل های سفارشی را که از رمزگذاری های شما آگاه هستند ، برای جلوگیری از این ترجمه ارائه دهید. حمایت از تبدیل های بومی در همه رمزگذاری های روبی برای من خیلی سخت است.

به هر حال ، جنبه عملی این ساده است: اطمینان حاصل کنید که IO و اشیاء رشته ای که به CSV منتقل می شوند دارای مجموعه رمزگذاری مناسب هستند و همه چیز فقط باید کار کند. روشهای CSV که به شما امکان می دهد اشیاء IO را باز کنید (CSV :: foreach () ، csv :: باز () ، csv :: read () ، و csv :: readlines ()) به شما امکان می دهد رمزگذاری را مشخص کنید.

یک استثناء جزئی هنگام تولید CSV در یک رشته با رمزگذاری که ASCII سازگار نیست ، ایجاد می شود. هیچ داده موجود برای استفاده از CSV برای تهیه خود وجود ندارد و بنابراین احتمالاً نیاز به رمزگذاری مورد نظر برای بیشتر این موارد دارید. سعی خواهد کرد با استفاده از CSV :: generate_line () یا array#to_csv () ، با استفاده از قسمتهای موجود در یک ردیف خروجی حدس بزنیم.

من سعی می کنم به هر مسئله رمزگذاری دیگر در مستندات روشها اشاره کنم.

این با تمام رمزگذاری های غیر "ساختگی" کشتی های یاقوت با تمام توانایی های من آزمایش شده است. با این حال ، این کد جدید شجاع است و ممکن است اشکالات داشته باشد. لطفا در صورت تمایل به گزارش هر مشکلی که با آن پیدا کرده اید گزارش دهید.

ثابت

رمزگذاری مورد استفاده همه مبدل ها.

این هش مبدل های داخلی CSV را که با نام قابل دسترسی است ، نگه می دارد. می توانید مبدل ها را با csv. convert () یا از طریق گزینه های منتقل شده به CSV :: جدید () انتخاب کنید.

: عدد صحیح

تبدیل هر یک از عدد صحیح () می پذیرد.

:شناور

هر شناور میدانی () را می پذیرد.

: عددی

ترکیبی از: عدد صحیح و: شناور.

:تاریخ

هر تاریخ میدانی را تبدیل می کند :: پارس () قبول می کند.

:زمان قرار

تبدیل هر قسمت DateTime :: پارس () قبول می کند.

:همه

همه مبدل های داخلی. ترکیبی از: date_time و: عددی.

قبل از تلاش برای تبدیل ، تمام مبدل های داخلی مبدل های داخلی Transcode به UTF-8 داده می شوند. اگر داده های شما به UTF-8 رمزگذاری نشود ، تبدیل شکست می خورد و این زمینه بدون تغییر باقی می ماند.

این هش به طور عمدی ناامید شده است و کاربران باید احساس راحتی کنند که مقادیری را به آن اضافه کنند که توسط همه اشیاء CSV قابل دسترسی باشد.

برای افزودن یک قسمت دسته کوچک موسیقی جاز ، مقدار باید مجموعه ای از نام ها باشد. مزارع دسته کوچک موسیقی جاز را می توان با سایر زمینه های دسته کوچک موسیقی جاز لانه کرد.

گزینه های استفاده شده در هنگام عدم استفاده از کد با کد فراخوانی ارائه می شود. آن ها هستند:

: col_sep

: row_sep

: quote_char

: field_size_limit

: مبدل ها

: unvorted_fields

: هدرها

: Retu_headers

: header_converters

: skip_blanks

: force_quotes

: skip_lines

: liberal_parsing

: quote_empty

regexp برای یافتن و تبدیل برخی از قالب های تاریخ مشترک استفاده می شود.

regexp برای یافتن و تبدیل برخی از قالب های متداول DateTime استفاده می شود.

یک ساختار FieldInfo شامل جزئیات مربوط به موقعیت یک قسمت در منبع داده ای است که از آن خوانده شده است. CSV این ساختار را به برخی از بلوک هایی که بر اساس ساختار میدانی تصمیم می گیرند منتقل می کند. برای مثال به csv. convert_fields () مراجعه کنید.

فهرست مطالب

شاخص صفر مبتنی بر این زمینه در ردیف خود.

خط

خط منبع داده این ردیف از آن است.

سرتیتر

هدر ستون ، در صورت وجود.

این هش مبدل های داخلی CSV را که با نام قابل دسترسی است ، نگه می دارد. شما می توانید headerConverters را با csv. header_convert () یا از طریق گزینه های منتقل شده به CSV :: جدید () انتخاب کنید.

:

downcase () را روی رشته هدر فراخوانی می کند.

:سمبل

فضاهای پیشرو/دنباله دار ریخته می شود ، رشته ها پایین می آیند ، فضاهای باقیمانده با زیرپوش ها جایگزین می شوند ، شخصیت های غیر کلمه ای از بین می روند و در نهایت to_sym () خوانده می شوند.

همه مبدل های سرصفحه داخلی، قبل از اقدام به تبدیل، داده های هدر را به UTF-8 تبدیل می کنند. اگر داده های شما را نتوان به UTF-8 تبدیل کرد، تبدیل انجام نمی شود و هدر بدون تغییر باقی می ماند.

این هش به طور عمدی ناامید شده است و کاربران باید احساس راحتی کنند که مقادیری را به آن اضافه کنند که توسط همه اشیاء CSV قابل دسترسی باشد.

برای افزودن یک قسمت دسته کوچک موسیقی جاز ، مقدار باید مجموعه ای از نام ها باشد. مزارع دسته کوچک موسیقی جاز را می توان با سایر زمینه های دسته کوچک موسیقی جاز لانه کرد.

نسخه کتابخانه نصب شده

ویژگی های

رمزگذاری [R]

رمزگذاری CSV در حال تجزیه یا نوشتن است. این رمزگذاری است که داده های تجزیه شده را در آن دریافت می کنید و/یا داده های رمزگذاری در آن نوشته می شود.

روش های کلاس عمومی

فیلتر ( **گزینه ها)<|row| .>برای تغییر منبع کلیک کنید فیلتر (ورودی، **گزینه ها)<|row| .> فیلتر (ورودی، خروجی، **گزینه ها)<|row| .>

این روش برای ساخت فیلترهای یونیکس مانند برای داده های CSV راحت است. هر ردیف به بلوک ارائه شده تسلیم می شود که می تواند در صورت نیاز آن را تغییر دهد. پس از بازگشت بلوک، ردیف به خروجی تغییر یافته یا خیر الحاق می شود.

آرگومان های ورودی و خروجی می توانند هر چیزی باشند که CSV::new() می پذیرد (به طور کلی اشیاء String یا IO). اگر داده نشود، به طور پیش فرض ARGF و $stdout هستند.

پارامتر گزینه نیز پس از تجزیه کلیدی هوشمندانه به CSV::new () فیلتر می شود. هر کلیدی که با :in_ یا :input_ شروع شود، شناسه اصلی حذف می شود و فقط در گزینه های Hash برای شی ورودی استفاده می شود. کلیدهایی که با :out_ یا :output_ شروع می شوند فقط بر خروجی تأثیر می گذارند. تمام کلیدهای دیگر به هر دو شی اختصاص داده می شوند.

گزینه :output_row_sep به طور پیش فرض $INPUT_RECORD_SEPARATOR ($/) است.

# فایل csv. rb، خط 468 دف خود.فیلتر(ورودی=صفر, خروجی=صفر, **گزینه ها) # گزینه های ورودی، خروجی یا هر دو را تجزیه کنید in_Options, out_Options = هش.جدیدrow_sep: $INPUT_RECORD_SEPARATOR> گزینه ها.هر یک do |کلید, ارزش| مورد کلید.به_s چه زمانی /Ain(?:put)? _(.+)x1a/ in_Options[$1.to_sym] = ارزش چه زمانی /Aout(?:put)? _(.+)x1a/ out_Options[$1.to_sym] = ارزش دیگر in_Options[کلید] = ارزش out_Options[کلید] = ارزش پایان پایان # ساخت لفاف ورودی و خروجی ورودی = جدید(ورودی || ARGF, in_Options) خروجی = جدید(خروجی || $stdout, out_Options) # بخوان، بازده، بنویس ورودی.هر یک do |ردیف| بازده ردیف خروجی  ردیف پایان پایان 

foreach (مسیر، **گزینه ها، & block) برای تغییر منبع کلیک کنید

این روش به عنوان رابط اصلی برای خواندن فایل های CSV در نظر گرفته شده است. شما از یک مسیر و هر گزینه ای که می خواهید برای خواندن تنظیم کنید عبور می کنید. هر ردیف از فایل به نوبه خود به بلوک ارائه شده ارسال می شود.

پارامتر گزینه ها می تواند هر چیزی باشد که CSV :: جدید () درک می کند. این روش همچنین یک پارامتر اضافی را درک می کند: رمزگذاری پارامتر که می توانید برای مشخص کردن رمزگذاری داده های موجود در پرونده مورد نظر استفاده کنید. شما باید این را ارائه دهید مگر اینکه داده های شما در رمزگذاری باشد :: Default_Exteal (). CSV از این استفاده می کند تا نحوه تجزیه داده ها را تعیین کند. شما ممکن است رمزگذاری دوم را تهیه کنید تا داده ها به عنوان خوانده شده از کدگذاری شده استفاده کنید. به عنوان مثال ، رمزگذاری: "UTF-32BE: UTF-8" داده های UTF-32BE را از پرونده می خواند اما قبل از CSV آن را به UTF-8 تبدیل می کند.

# پرونده csv. rb ، خط 507 دف خود.برای هر(مسیر, **گزینه ها, &مسدود کردن) برگشت به_نوم(__روش__, مسیر, گزینه ها) مگر اینکه block_given؟ باز کن(مسیر, گزینه ها) do |CSV| CSV.هر یک(&مسدود کردن) پایان پایان 

تولید (STR ، ** گزینه ها)<|csv| .>برای تغییر منبع کلیک کنید تولید (** گزینه ها)<|csv| .>

این روش رشته ای را که ارائه می دهید یا یک رشته پیش فرض خالی در یک شی CSV که به بلوک ارائه شده منتقل می شود ، می پیچد. شما می توانید از بلوک برای ضمیمه ردیف های CSV به رشته استفاده کنید و وقتی بلوک از بین می رود ، رشته نهایی بازگردانده می شود.

توجه داشته باشید که یک رشته منتقل شده با این روش اصلاح شده است. در صورت نیاز به رشته جدید ، قبل از عبور با DUP () تماس بگیرید.

پارامتر گزینه ها می تواند هر چیزی باشد که CSV :: جدید () درک می کند. این روش یک اضافی را درک می کند: رمزگذاری پارامتر هنگام عبور از رشته ای برای تنظیم رمزگذاری پایه برای خروجی. اگر قصد دارید داده های سازگار با ASCII را تولید کنید ، CSV به این نکته نیاز دارد.

# پرونده csv. rb ، خط 532 دف خود.تولید می کنند(str=صفر, **گزینه ها) # اگر هیچکدام از آنها داده نشده است ، یک رشته خالی پیش فرض اضافه کنید if str str = رفیق.جدید(str) str.دنبال کردن(0, IO::به دنبال_) دیگر رمز = گزینه ها[: رمزگذاری] str = +"" str.Force_encoding(رمز) if رمز پایان CSV = جدید(str, گزینه ها) # بسته بندی کردن بازده CSV # عملکرد برای ضمیمه CSV.رشته # رشته نهایی بازگشت پایان 

generate_line (ردیف ، ** گزینه ها) برای جابجایی منبع کلیک کنید

این روش میانبر برای تبدیل یک ردیف واحد (آرایه) به یک رشته CSV است.

پارامتر گزینه ها می تواند هر چیزی باشد که CSV :: جدید () درک می کند. این روش یک اضافی را درک می کند: رمزگذاری پارامتر برای تنظیم رمزگذاری پایه برای خروجی. این روش سعی خواهد کرد که در صورت امکان رمزگذاری خود را از اولین قسمت غیر صفر در ردیف حدس بزنید ، اما ممکن است لازم باشد از این پارامتر به عنوان یک برنامه پشتیبان استفاده کنید.

گزینه: row_sep به طور پیش فرض به $ input_record_separator ($/) هنگام فراخوانی این روش.

# پرونده csv. rb ، خط 560 دف خود.تولید_(ردیف, **گزینه ها) گزینه ها= row_sep: $INPUT_RECORD_SEPARATOR>.ادغام(گزینه ها) str = +"" if گزینه ها[: رمزگذاری] str.Force_encoding(گزینه ها[: رمزگذاری]) السیف رشته = ردیف.پیدا کردن |f| f.هست یک؟(رشته)> str.Force_encoding(رشته.رمز) پایان (جدید(str, گزینه ها)  ردیف).رشته پایان 

نمونه (data = $ stdout ، ** گزینه ها) برای تغییر منبع کلیک کنید

این روش به عنوان نمونه CSV ، دقیقاً مانند CSV :: جدید () باز می گردد ، اما نمونه برای همه تماسهای آینده به این روش برای همان شیء داده (آزمایش شده توسط Object#Object_ID ()) ذخیره می شود و با همان گزینه ها باز می گردد. بشر

اگر یک بلوک داده شود ، نمونه به بلوک منتقل می شود و مقدار بازگشت به مقدار بازده بلوک تبدیل می شود.

# پرونده csv. rb ، خط 428 دف خود.نمونه، مثال(داده ها = $stdout, **گزینه ها) # برای این روش تماس _signature_ ایجاد کنید ، شیء داده و گزینه ها غوغا = [داده ها.شیء_ id] + گزینه ها.مقادیر_ه(*پیش فرض_پیتون.کلیدی.مرتب سازی بر اساس <|همدی کردن| همدی کردن.به_s>) # برای این امضا نمونه ای را واگذار یا ایجاد کنید نمونه ها ||= هش.جدید نمونه، مثال = (نمونه ها[غوغا] ||= جدید(داده ها, گزینه ها)) if block_given؟ بازده نمونه، مثال # بلوک اجرا ، در صورت داده ، نتیجه بازگشت دیگر نمونه، مثال # یا نمونه را برگردانید پایان پایان 

جدید (داده ها ، col_sep: "،" ، row_sep :: auto ، quote_char: '"" ، field_size_limit: nil ، مبدل ها: nil ، unconverted_fields: nil ، headers: false ، retu_headers: false ، nil ، header_converters: nil ، sple ، splep_blanks: false ، force_quotes: false ، skip_lines: nil ، liberal_parsing: false ، inte_encoding: nil ، exteal_encoding: nil ، رمزگذاری: nil ، nil_value: nil ، vattion_value: "" ، letote_empty: true) کلیک کنید تا منبع منبع

این سازنده یا یک رشته یا یک شیء IO را که در داده ها برای خواندن و/یا نوشتن منتقل شده است ، بسته بندی می کند. علاوه بر روشهای نمونه CSV ، چندین روش IO تفویض می شوند.(به CSV :: باز () برای یک لیست کامل مراجعه کنید.) اگر رشته ای را برای داده ها منتقل می کنید ، می توانید بعداً آن را (پس از نوشتن به آن) با CSV. String () بازیابی کنید.

توجه داشته باشید که یک رشته بسته بندی شده در ابتدا (برای خواندن) قرار خواهد گرفت. اگر می خواهید در پایان (برای نوشتن) ، از CSV :: تولید () استفاده کنید. اگر می خواهید موقعیت دیگری داشته باشید ، به جای آن یک شیء از پیش تعیین شده Stringio را منتقل کنید.

شما ممکن است ترجیحات خواندن و/یا نوشتن را در گزینه های گزینه تنظیم کنید. گزینه های موجود عبارتند از:

: col_sep

رشته بین هر قسمت قرار داده شده است. این رشته قبل از تجزیه در رمزگذاری داده ها رمزگذاری می شود.

: row_sep

رشته به انتهای هر ردیف اضافه می شود. این را می توان روی تنظیمات ویژه :auto تنظیم کرد، که درخواست می کند CSV به طور خودکار این را از داده ها کشف کند. کشف خودکار در داده ها به دنبال دنباله «

: quote_char

» یا «

: field_size_limit

:quote_char

: مبدل ها

:field_size_limit

: unvorted_fields

: مبدل ها

: هدرها

:unconverted_fields

: Retu_headers

: سرصفحه ها

در صورت تنظیم: First_Row یا True ، ردیف اولیه پرونده CSV به عنوان یک ردیف از هدرها رفتار می شود. در صورت تنظیم یک آرایه ، از محتویات به عنوان هدر استفاده می شود. اگر روی یک رشته تنظیم شود ، رشته از طریق تماس csv :: parse_line () با همان: col_sep ،: row_sep ، و: quote_char به عنوان این نمونه برای تولید مجموعه ای از هدرها اجرا می شود. این تنظیم باعث می شود که CSV#Shift () ردیف ها را به عنوان CSV :: ROW به جای آرایه و CSV#خوانده شده () بازگرداند تا CSV :: جدول جدول را به جای آرایه ای از آرایه ها برگرداند.

: Retu_headers

: header_converters

: heads_hreaders

: skip_blanks

: header_converters

: force_quotes

: skip_blanks

: skip_lines

: force_quotes

: liberal_parsing

: skip_lines

هنگامی که روی یک شیء پاسخ به مطابقت قرار می گیرد ، هر خط مطابق با آن یک نظر در نظر گرفته می شود و در هنگام تجزیه. هنگامی که روی یک رشته تنظیم می شود ، ابتدا به یک regexp تبدیل می شود. هنگامی که روی NIL تنظیم شد ، هیچ خطی در نظر گرفته می شود. اگر شیء تصویب شده به مسابقه پاسخ ندهد ، ArgrentError پرتاب می شود.

: liberal_parsing

هنگامی که روی یک مقدار واقعی تنظیم شده است ، CSV سعی خواهد کرد ورودی را با RFC 4180 ، مانند نقل قول های مضاعف در زمینه های غیرقابل انعطاف ، جدا کند.

: nil_value

: quote_empty

: vate_value

هنگام تنظیم یک شی ، هر مقدار از یک قسمت رشته خالی توسط شیء تنظیم شده جایگزین می شود.

: quote_empty دف گزینه ها به دلایل عملکرد نمی توانند در روشهای نمونه نادیده گرفته شوند ، بنابراین حتماً آنچه را که می خواهید در اینجا تنظیم کنید.(داده ها, دنباله ",", شروع کردن داده ها, col_sep: '"', row_sep: صفر, مبدل ها: صفر, نیل صفر, هدرها: Unconverted_fields:, نیل Unconverted_fields:, دروغ صفر, دروغ صفر, نیل Unconverted_fields:, نیل Unconverted_fields:, دروغ صفر, دروغ Unconverted_fields:, نیل صفر, دروغ صفر, نیل صفر, نیل صفر, نیل "", nil_value: درست است، واقعی) vale_value: QUOTE_EMPTY:.جدید(بالا بردن) if داده ها.جدید "نمی توان نیل را به عنوان CSV تجزیه کرد" داده ها = داده ها.هست یک؟(رشته) ? رفیق.جدید(داده ها) : داده ها جدید = داده ها(رمز, encoding) تعیین_نه سازی = <نیل داخلی_نهای داخلی, نیل nil_value:,> nil_value = vale_value: vate_value = initial_converters مبدل = <initial_header_converters header_converters, parser_options column_separator:, col_sep row_separator:, row_sep: QUOTE_CHACTER:, نیل field_size_limit:, هدرها: Unconverted_fields:, نیل هدرها:, نیل Retu_headers:, دروغ SKIP_BLANKS:, دروغ SKIP_LINES:, نیل جدید, نیل داخلی_نهای داخلی, نیل nil_value:,> nil_value = صفر vate_value = <نیل جدید, writer_options (رمزگذاری: رمز.جدید), نیل رمز, هدرها: Unconverted_fields:, دروغ هدرها:, initial_header_converters header_converters, parser_options column_separator:, col_sep row_separator:, nil_value: QUOTE_CHACTER:,> نقل قول = صفر نقل قول_ خالی if vate_value[نیل] پایان 

writer_options<|faster_csv| .>برای تغییر منبع کلیک کنید پایان<|faster_csv| .> باز (نام پرونده ، حالت = "RB" ، ** گزینه ها) برای تغییر منبع کلیک کنید

باز (نام پرونده ، ** گزینه ها)

باز (نام پرونده ، حالت = "RB" ، ** گزینه ها)

باز (نام پرونده ، ** گزینه ها)

این روش یک شیء IO را باز می کند و آن را با CSV می پیچد. این به عنوان رابط اصلی برای نوشتن فایل CSV در نظر گرفته شده است.

شما باید یک نام پرونده را تصویب کنید و ممکن است به صورت اختیاری یک حالت برای Open () روبی اضافه کنید. همچنین ممکن است یک هش اختیاری را که حاوی هر گزینه CSV :: جدید () به عنوان استدلال نهایی درک می کند ، منتقل کنید.

  • این روش مانند تماس Ruby's Open () کار می کند ، به این ترتیب که یک شیء CSV را به یک بلوک ارائه شده منتقل می کند و هنگام خاتمه بلوک ، آن را می بندد ، یا در صورت عدم ارائه بلوک ، شیء CSV را باز می گرداند.(توجه: این متفاوت از کتابخانه Ruby 1. 8 CSV است که ردیف ها را به بلوک منتقل می کند. از CSV :: foreach () برای آن رفتار استفاده کنید.)
  • شما باید یک حالت را با یک طراح رمزگذاری تعبیه شده ارائه دهید مگر اینکه داده های شما در رمزگذاری باشد :: Default_Exteal (). CSV رمزگذاری شیء زیرین IO (تنظیم شده توسط روشی که عبور می کنید) را بررسی می کند تا نحوه تجزیه داده ها را تعیین کند. شما ممکن است یک رمزگذاری دوم را تهیه کنید تا داده های رمزگذاری شده همانطور که می توانید با یک تماس عادی به io :: باز () باز کنید. به عنوان مثال ، "RB: UTF-32BE: UTF-8" داده های UTF-32BE را از پرونده می خواند اما قبل از CSV آن را به UTF-8 تبدیل می کند.
  • یک شیء CSV باز شده برای راحتی به بسیاری از روشهای IO واگذار می کند. ممکن است تماس بگیرید:
  • binmode ()
  • binmode؟ ()
  • بستن()
  • close_read ()
  • close_write ()
  • بسته؟ ()
  • EOF ()
  • eof؟ ()
  • Exteal_Encoding ()
  • fcntl ()
  • FILENO ()
  • گله ()
  • گرگرفتگی ()
  • fsync ()
  • داخلی_نکودینگ ()
  • ioctl ()
  • isatty ()
  • مسیر()
  • PID ()
  • POS ()
  • POS = ()
  • بازگشایی ()
  • به دنبال ()
  • آمار ()
  • همگام سازی ()
  • همگام = ()
  • بگو ()
  • to_i ()
to_io () دف خود.باز کن(دنباله, خود=باز کن, **گزینه ها) حالت "R" گزینه ها# پرونده ای را با باقی مانده + args + بدون خط جدید باز کنید Unconverted_fields:>.ادغام(گزینه ها) دروغ f = ادغام.باز کن(دنباله, خود, گزینه ها) نجات QUOTE_EMPTY: => e vale_value: مگر اینکه بحث کننده.بالا بردن(e.مگر اینکه) /نیاز به binmode/ خود == باز کن خود = حالت گزینه هاحالت "RB".File_opts>.ادغام(گزینه ها) پیش فرض_ترونی پایان دروغ CSV = جدید(f, گزینه ها) نجات جدید f.گزینه ها vale_value: پایان بستن if block_given؟ دروغ بازده CSV شروع CSV.گزینه ها پایان دیگر CSV پایان پایان 

CSV<|row| .>برای تغییر منبع کلیک کنید پایان

تجزیه (Str ، ** گزینه ها)

برای تغییر منبع کلیک کنید

تجزیه (Str ، ** گزینه ها) دف خود.تجزیه کردن(*دنباله, &مسدود کردن) CSV = جدید(*دنباله) برگشت CSV.هر یک(&مسدود کردن) if block_given؟ هر یک دروغ CSV.خواندن شروع CSV.گزینه ها پایان پایان 

بستن

پایان

پایان

parse_line (خط ، ** گزینه ها) برای تغییر منبع کلیک کنید دف خود.# پرونده csv. rb ، خط 698(دنباله, **گزینه ها) جدید(دنباله, گزینه ها).تغییر مکان پایان 

گزینه ها

تغییر مکان

پایان دف خود.خواندن(مسیر, *گزینه ها) باز کن(مسیر, *گزینه ها) <|CSV| CSV.خواندن> پایان 
تجارت گزینه های دودویی در ایران...
ما را در سایت تجارت گزینه های دودویی در ایران دنبال می کنید

برچسب : نویسنده : زین‌العابدین مراغه‌ای بازدید : 43 تاريخ : دوشنبه 13 شهريور 1402 ساعت: 11:34