আমি এই নিবন্ধটি পড়ছিলাম এবং আমি এই প্রশ্নের সঠিক উত্তরের জন্য আগ্রহী।
আমার মনে যে বিষয়টি আসে কেবল এটিই সম্ভবত যে কয়েকটি দেশে দশমিক বিভাজক একটি কমা এবং সিএসভিতে ডেটা ভাগ করার সময় সমস্যা হতে পারে তবে আমি আমার উত্তর সম্পর্কে সত্যই নিশ্চিত নই।
আমি এই নিবন্ধটি পড়ছিলাম এবং আমি এই প্রশ্নের সঠিক উত্তরের জন্য আগ্রহী।
আমার মনে যে বিষয়টি আসে কেবল এটিই সম্ভবত যে কয়েকটি দেশে দশমিক বিভাজক একটি কমা এবং সিএসভিতে ডেটা ভাগ করার সময় সমস্যা হতে পারে তবে আমি আমার উত্তর সম্পর্কে সত্যই নিশ্চিত নই।
উত্তর:
সিএসভি ফর্ম্যাট স্পেসিফিকেশন আরএফসি 4180 এ সংজ্ঞায়িত করা হয়েছে । এই স্পেসিফিকেশন কারণ প্রকাশিত হয়েছিল
অস্তিত্বের কোনও আনুষ্ঠানিক স্পেসিফিকেশন নেই, যা সিএসভি ফাইলগুলির বিস্তৃত ব্যাখ্যার অনুমতি দেয়
দুর্ভাগ্যক্রমে, 2005 সাল থেকে (আরএফসি প্রকাশের তারিখ), কিছুই পরিবর্তন হয়নি। আমাদের এখনও বিভিন্ন বাস্তবায়ন রয়েছে have আরএফসি 4180 এ সংজ্ঞায়িত সাধারণ পদ্ধতি হ'ল উদ্ধৃতি চিহ্নগুলিতে কমা হিসাবে অক্ষরযুক্ত ক্ষেত্রগুলি আবদ্ধ করা, এই সুপারিশটি অবশ্য সর্বদা বিভিন্ন সফ্টওয়্যার দ্বারা পূরণ হয় না।
সমস্যাটি হ'ল বিভিন্ন ইউরোপীয় লোকালয়ে কমা অক্ষর দশমিক পয়েন্ট হিসাবে কাজ করে, সুতরাং আপনি 0,005
পরিবর্তে লিখুন 0.005
। তবুও অন্যান্য ক্ষেত্রে, অঙ্কের গোষ্ঠীগুলিকে সিগন্যাল করার জন্য ফাঁকা স্থানের পরিবর্তে কমা ব্যবহার করা হয়, যেমন 4,000,000.00
( এখানে দেখুন )। উভয় ক্ষেত্রেই কমা ব্যবহার করে সম্ভবত সিএসভি ফাইলগুলি থেকে ডেটা পড়ার ক্ষেত্রে ত্রুটি ঘটতে পারে কারণ আপনার সফ্টওয়্যারটি সত্যিই জানেন না 0,005, 0,1
যে দুটি সংখ্যা বা চারটি পৃথক নম্বর কিনা ( উদাহরণস্বরূপ এখানে দেখুন )।
সর্বশেষে তবে তা না, যদি আপনি নিজের ডেটা ফাইলে পাঠ্য সঞ্চয় করেন তবে কমাগুলি পাঠ্যের তুলনায় অনেক বেশি সাধারণ উদাহরণস্বরূপ, সেমিকোলনস, তাই যদি আপনার পাঠ্যটি উদ্ধৃতি চিহ্নগুলিতে আবদ্ধ না হয় তবে এই জাতীয় ডেটাও ত্রুটি সহ সহজেই পড়া যায় can ।
কোনও কিছুই কমা ভাল করতে পারে না বা আরও খারাপ ফিল্ড বিভাজক হিসাবে সিএসভি ফাইলগুলি আরএফসি 4180 হিসাবে সুপারিশ অনুসারে ব্যবহৃত হয় যা উপরে বর্ণিত সমস্যা থেকে রক্ষা করে। তবে যদি সরলিকৃত সিএসভি ফর্ম্যাটটি ব্যবহারের ঝুঁকি থাকে যা উদ্ধৃতি চিহ্নগুলিতে ক্ষেত্রগুলি আবদ্ধ করে না বা প্রস্তাবটি বেমানানভাবে ব্যবহার করা যেতে পারে তবে অন্যান্য বিভাজক (যেমন অর্ধকোলন) নিরাপদ পদ্ধতির বলে মনে হয়।
,
কোনও বিরল বিভাজনের পরিবর্তে ব্যবহার করা ডেটা ব্লাট করে কারণ আপনাকে এটি সর্বদা এড়িয়ে যেতে হবে যদিও সত্য। এবং স্পষ্টতই সেই সমস্ত লোক রয়েছে যারা ভাবেন যে তারা জানেন যে CSV কীভাবে কাজ করে কিন্তু বাস্তবে তা করে না।
প্রযুক্তিগতভাবে কমা বিভাজক হিসাবে ব্যবহৃত অন্য কোনও চরিত্রের মতোই ভাল। বিন্যাসের নামটি সরাসরি উল্লেখ করে যে মানগুলি কমা দ্বারা পৃথক করা হয় (কমা-বিভাজিত মান)।
সিএসভি ফর্ম্যাটটির বিবরণটি বিভাজক হিসাবে কমা ব্যবহার করছে।
কমাযুক্ত যে কোনও ক্ষেত্রে ডাবল-কোট করা উচিত। যাতে এটিতে ডেটা পড়তে সমস্যা হয় না the বিবরণ থেকে the দফাটি দেখুন :
- লাইন ব্রেক (সিআরএলএফ), ডাবল কোট এবং কমাগুলি সহ ক্ষেত্রগুলিকে ডাবল-কোটে আবদ্ধ করা উচিত।
উদাহরণস্বরূপ ফাংশনগুলি read.csv
এবং write.csv
ডি থেকে ডিফল্টরূপে বিভাজক হিসাবে কমা ব্যবহার করা হয়।
values
যে কমা বিচ্ছিন্ন। অন্যরা formatting
সংখ্যার ইওরোপীয়কে ইঙ্গিত দিচ্ছেন , এটি CSv এর জন্য কোনও সমস্যা নয় standard
, কারণ আপনি উপরে point দফায় সঠিকভাবে উল্লেখ করেছেন। "সঠিক ব্যবহার" থেকে ডাইভারজেন্সগুলি কোনও ডেটা ফর্ম্যাট সহ বিদ্যমান exist মুল বক্তব্যটি - আপনার ডেটা জানুন। অন্যরা উল্লেখ করেছেন tab
বা ;
সীমাবদ্ধ করেছেন, তবে আপনি যখন ব্যবহারকারী-দ্বারা প্রবেশ করা তথ্য ব্যবহার করছেন (সম্ভবত কোনও ফর্মের মাধ্যমে এবং একটি ডেটাবেস দ্বারা ক্যাপচার করা হয়েছে - - আমাকে ফ্রি টেক্সট এন্ট্রি ক্ষেত্রগুলির সাথে ঝগড়া করতে হয়েছে - চর্বি আঙুলযুক্ত হয়েছে tab
... এটি সফল হয়)
সংখ্যায় একটি ডিজিটাল বিভাজক হওয়ার পাশাপাশি এটি বহু দেশে ঠিকানার অংশ (যেমন গ্রাহকের ঠিকানা ইত্যাদি) গঠন করে। কিছু দেশে সংক্ষিপ্ত-সংজ্ঞায়িত ঠিকানা রয়েছে, আবার অনেকের কাছে দীর্ঘ-ঘুরানো ঠিকানা রয়েছে, কখনও কখনও একই লাইনে দুটি কমা রয়েছে। ভাল সিএসভি ফাইলগুলি এ জাতীয় সমস্ত ডাবল উদ্ধৃতিতে আবদ্ধ করে। তবে অতি সরল, দুর্বল লিখিত পার্সারগুলি এ জাতীয় পড়ার এবং আলাদা করার জন্য সরবরাহ করে না। (তারপরে, ডাবলির অংশ হিসাবে ডাবল উক্তি ব্যবহার করার সমস্যা রয়েছে যেমন কোনও কবিতার উদ্ধৃতি)।
@ টিম এর উত্তরটি সঠিক হলেও - আমি যুক্ত করতে চাই যে সামগ্রিকভাবে "সিএসভি" এর কোনও সাধারণ মান নেই - বিশেষ করে পালানোর নিয়মগুলি মোটেই সংজ্ঞায়িত হয় না, যা "প্রোগ্রামে" পাঠ্যযোগ্য যা "ফর্ম্যাট" এর দিকে পরিচালিত করে, তবে অন্যটি নয় । এটি সূর্যের নীচে প্রতিটি "প্রোগ্রামার" কেবল "" ওহ সিএসভি- আমি নিজের পার্সার তৈরি করব! এবং তারপরে সমস্ত প্রান্তের মামলাগুলি মিস করে।
অধিকন্তু, সিএসভিতে পুরোপুরি মেটাডেটা বা কোনও কলামের ডেটা টাইপ সঞ্চয় করার দক্ষতা নেই - এটি বেশ কয়েকটি ডকুমেন্টে পৌঁছে যা আপনাকে অবশ্যই ডেটা আনসারস্ট্যান্ড করার জন্য পড়তে হবে।
আপনি যদি কমা ডিলিমেটারটি খনন করতে এবং ট্যাব চরিত্রটি ব্যবহার করতে পারেন তবে আপনি আরও ভাল সাফল্য পাবেন। আপনি .CSV নামক ফাইলটি ছেড়ে যেতে পারেন এবং বেশিরভাগ প্রোগ্রামে আমদানি করা সাধারণত সমস্যা হয় না। আপনি যখন নিজের ফাইলটি আমদানি করেন তখন কমা না দিয়ে সীমাবদ্ধ ট্যাব নির্দিষ্ট করুন। আপনার ডেটাতে যদি কমা রয়েছে তবে আপনি ভাল জানেন তাই সীমানা নির্ধারণ করা কমা নির্দিষ্ট করার সময় আপনার সমস্যা হবে।
|
হোম- ব্রিউড সিএসভির মতো রেকর্ডের পাঠ্য ফাইলগুলিতে (বইয়ের শিরোনাম এবং অন্যান্য নথির মেটাডেটা সহ) ডিলিমিটার হিসাবে আমি ভাল ফলাফল পেয়েছি । |
আমি যে ডেটা দিয়ে কাজ করি তা কখনই ঘটে না, তাই আমি কেবল পার্ল স্ক্রিপ্টগুলি লিখতে পারি যা কোনও প্রকারের উদ্ধৃতি অনুসন্ধান না করে কেবল বিভক্ত / যোগদান করে join এটি এমন এক-অফ প্রকল্পের জন্য যা কেবলমাত্র এমএস অ্যাক্সেস ডাটাবেস থেকে সংরক্ষিত মেটাডেটা প্রক্রিয়াজাত করে। যে কোনও বৃহত প্রকল্পের জন্য, বা আপনি যদি এই ফাইল-ফর্ম্যাটটিতে দীর্ঘমেয়াদি ডেটা রাখার পরিকল্পনা করেন তবে আরও শক্তিশালী কিছু বাছুন! এই মাসের ব্যাচটি কিছু ভেঙে দিলে আমি সর্বদা কিছু টুইট করতে পারি।
split
কমান্ড লিখেছিলাম তখন অন্যান্য বিষয়গুলির মধ্যে পার্ল কী করেছিল এবং কী করেছিল তা দেখার সমতুল্য ছিল। উত্স কোড নয়, কেবল কার্যকারিতা দেওয়া হয়েছে।
cut
, sort
এবং uniq
।
ASCII আমাদের চারটি "বিভাজক" অক্ষর সরবরাহ করে, যেমন ascii (7) * নিক ম্যান পৃষ্ঠা থেকে একটি স্নিপেটে দেখানো হয়েছে:
Oct Dec Hex Char
----------------------
034 28 1C FS (file separator)
035 29 1D GS (group separator)
036 30 1E RS (record separator)
037 31 1F US (unit separator)
এই উত্তরটি তাদের উদ্দেশ্যযুক্ত ব্যবহারের একটি শালীন ওভারভিউ সরবরাহ করে।
অবশ্যই, এই নিয়ন্ত্রণ কোডগুলিতে আরও জনপ্রিয় সীমানা সরবরাহকারীদের মানব-বন্ধুত্বপূর্ণতা (পঠনযোগ্যতা এবং ইনপুট) এর অভাব রয়েছে, তবে প্রোগ্রামগুলির মধ্যে ডেটা অভ্যন্তরীণ এবং / অথবা সংক্ষিপ্ত বিনিময়ের জন্য গ্রহণযোগ্য পছন্দ।
সমস্যাটি কমা নয়; সমস্যা উদ্ধৃত হয়। আপনি যে কোনও রেকর্ড এবং ফিল্ড ডিলিমিটার ব্যবহার করুন না কেন, আপনাকে তাদের সামগ্রীতে দেখা করার জন্য প্রস্তুত থাকতে হবে। সুতরাং আপনার একটি উদ্ধৃতি ব্যবস্থা দরকার। এবং তারপরে আপনার উদ্ধৃতি চরিত্রটি উপস্থিত হওয়ার জন্য একটি উপায় প্রয়োজন।
আরএফসি 4180 মান অনুসরণ করা প্রত্যেকের জন্য সবকিছুকে সহজ করে তোলে।
এটির ভুল হয়েছে এমন কোনও প্রোগ্রামের আউটপুটটি সম্ভবত স্থির করতে আমাকে ব্যক্তিগতভাবে একটি স্ক্রিপ্ট লিখতে হয়েছিল, সুতরাং আমি এটি সম্পর্কে কিছুটা জঙ্গি। "সম্ভবত ফিক্স" এর অর্থ হ'ল এটি আমার ডেটার জন্য কাজ করেছিল তবে আমি এটি দেখতে পাচ্ছি যেখানে এটি ব্যর্থ হবে। (এই প্রোগ্রামের প্রতিরক্ষাতে, এটি স্ট্যান্ডার্ডের আগে লেখা হয়েছিল।)