CSV আমদানি করার সময় আমি কীভাবে নম্বরগুলিকে ম্যাংলিং নম্বর থেকে রক্ষা করব?


12

আমি যখন নাম্বারগুলিতে কোনও সিএসভি ফাইল খুলি, এটি "সহায়কভাবে" ক্ষেত্রগুলিকে অগ্রণী জিরোগুলি সরিয়ে, তারিখ হিসাবে স্বীকৃত জিনিসগুলিকে রূপান্তর করে সংখ্যাসূচক হিসাবে চিহ্নিত করে conver

উদাহরণস্বরূপ, আপনি একটি ইউপিসি কোড একটি নম্বর স্প্রেডশিটে টাইপ করেন 005566778899 , নম্বরগুলি স্বয়ংক্রিয়ভাবে 5566778899 এ রূপান্তরিত হবে । এটি আমি চাই না ...

যাইহোক, আমি যেভাবে নম্বরগুলি ব্যবহার করি , আমি পূর্ববর্তী জেরো সহ কয়েক হাজার ইউপিসি কোড সহ ডাটাবেসগুলি খুলি। তাদের মধ্যে কয়েকটিতে তারিখগুলিও থাকে যা নম্বরগুলিও পুনরায় ফর্ম্যাট করে। মূলত আমি এই বৈশিষ্ট্যগুলির কোনওটিই চাই না, আমি চাই আমার বিষয়বস্তুটি একা থাকুক।

আমি যখন কোনও সিএসভি ফাইল খুলি তখন কীভাবে আমি আমার ডেটা অক্ষত রাখার জন্য নম্বর পেতে পারি?

আমদানি করার পরে ক্ষেত্রগুলিকে পাঠ্যে রূপান্তর করা কার্যকর হবে না কারণ ডেটা ইতিমধ্যে গণ্ডগোল হয়েছে ...


"ডেটাটি ইতিমধ্যে গণ্ডগোল করে ফেলেছিল" এর অর্থ কী? ফাইলটি খোলার পরে আপনি কি পাঠ্যে রূপান্তর করতে চান ?
ড্যানিয়েল

ফাইলটি খোলার পরে, এক্সেল এবং নম্বর উভয়ই আপনার সমস্ত ডেটা বদলে যাবে। সুতরাং এটি যাইহোক আমাকে করতে হবে, ফাইলটি খোলার আগে আমাকে এটি করতে হবে।
হেনরিয়্যারন

7 বছর পরে এটি এখনও একটি ফাঁক গর্ত বলে মনে হচ্ছে। এটি সমস্যাযুক্ত যে সিএসভি -> নম্বর -> সিএসভি থেকে একটি বৃত্তাকার ভ্রমণটি কোষগুলিকে সংশোধন করে। শীর্ষস্থানীয় জিরোস একটি ভাল উদাহরণ। আর একটি হ'ল শতাংশ (যেমন 20% 0.2 হয়)। আর একটি হ'ল বৈজ্ঞানিক স্বরলিপি (যেমন 1E-2 0.01 হয়ে যায়)। ডাবল উদ্ধৃতিতে মোড়ক দেওয়া কোনও উপকারে আসে না এবং প্রেরিতের সাথে অ্যাডাস্ট্রোফের আক্ষরিক অর্থে ব্যাখ্যা করা হয়। আমি মনে করি রফতানির পরে সমস্ত প্রাথমিক এস্ট্রোফেসগুলি আমদানি করার আগে অ্যাডাস্ট্রোফের সাথে সমস্ত কিছু উপস্থাপন করা এবং সর্বোত্তম বিকল্প হতে পারে ...
হিথ রাফ্ট্রি

উত্তর:


7

যদি কোনও সিএসভি ফাইলের একটি ক্ষেত্র প্রেরণাদণ্ডী ( ') দিয়ে শুরু হয় , এক্সেল এবং নম্বর উভয়ই ক্ষেত্রটিকে পাঠ্য হিসাবে বিবেচনা করবে এবং কোনও সংখ্যাসূচক বিন্যাসে রেন্ডার করবে না।

আপনার সিএসভি ফাইলগুলি ডাবল উদ্ধৃতিগুলিতে সংখ্যার ক্ষেত্রগুলি ঘেরের মাধ্যমে পাঠ্য রেন্ডারিংয়ের জন্য জোর করার চেষ্টা করেছে বলে মনে হয়, তবে নম্বর এবং এক্সেল মনে হয় না যে ডাবল উদ্ধৃতি সংখ্যাগুলি স্ট্রিং হিসাবে ধরা উচিত। কৌতুকটি CSV ফাইলগুলিকে সংশোধন করার মতো বলে মনে হচ্ছে তাই তারা সংখ্যার ক্ষেত্রগুলির জন্য "ডাবল উদ্ধৃতিতে অন্তর্ভুক্ত" ট্রিকের পরিবর্তে "একটি একক অ্যাডাস্ট্রোফের সাথে শুরু হয়" কৌশলটি ব্যবহার করে, তবে বিরামচিহ্নযুক্ত টেক্সট ক্ষেত্রগুলির জন্য ডাবল উদ্ধৃতি রাখুন (কমা সহ, উদ্ধৃতি চিহ্ন, লাইন ব্রেক, ইত্যাদি)।

আপনার সিএসভি ফাইলগুলি প্রক্রিয়া করতে যাতে তারা এটি করে, আপনি একটি স্বয়ংক্রিয় অ্যাপ্লিকেশন তৈরি করতে পারেন।

অটোমেটারে একটি নতুন অ্যাপ্লিকেশন তৈরি করুন।

এটিতে একটি একশন থাকবে: চালিত শেল স্ক্রিপ্ট (আর্গুমেন্ট হিসাবে ইনপুট পাস করা)। লিপিটি এখানে:

for f in "$@"
do
    perl -pi -e "s/\"\"([0-9A-Za-z: \.\-+]+)\"/'\1/g" "$f"
done

ফলস্বরূপ অ্যাপ্লিকেশনটি আপনার ডেস্কটপে সংরক্ষণ করুন। আপনি অ্যাপ্লিকেশন আইকনে নম্বরে যে সিএসভি ফাইলগুলি ব্যবহার করতে চান তা ফেলে দিন এবং সেগুলি রূপান্তরিত হবে যাতে নম্বরগুলি ক্ষেত্রগুলিকে আক্ষরিক সংখ্যা হিসাবে রাখে এবং সেগুলি ফর্ম্যাট করে না বা তথ্য ফেলে দেয় না।

এটি চেষ্টা করার আগে আপনার ডেটা ব্যাক আপ করুন; এটি সম্ভবত রেকর্ড ক্ষেত্রের মধ্যে একটি বিশেষভাবে অদ্ভুতভাবে নির্মিত স্ট্রিং ফলাফলগুলি এখানে ফেলে দিতে পারে possible

এখানে চিত্র বর্ণনা লিখুন


এই কাজটি করা দেখে মনে হচ্ছে এটির কিছু মিথস্ক্রিয়া দরকার। এই আলোচনাটি আরও ভালভাবে আড্ডায় স্থান পেতে পারে
ড্যানিয়েল

0

বিশেষত, শীর্ষস্থানীয় জিরোগুলি কীভাবে পরিচালনা করতে হবে তা এখানে । আমি মনে করি আপনার প্রশ্নটি স্বতঃ সংশোধনের চেয়ে সেল ফরম্যাটিং সম্পর্কে বেশি।

যেমনটি উল্লেখ করা হয়েছিল স্বয়ংক্রিয়োধন বৈশিষ্ট্যটি নিজেই একটি সিস্টেম আইটেম এবং সিস্টেম পছন্দগুলি থেকে অক্ষম করা দরকার।


কোষগুলিকে এই ফর্ম্যাটে রূপান্তর করা
উপকারী

1
আপনি কোষগুলি ফর্ম্যাট করলে জিরোগুলি ফিরে আসার প্রত্যাশা করতাম - যদি সংখ্যাগুলি আমদানিতে এমন জিরোগুলি সত্যিকারের স্তন্যপান করে তবে তা ধ্বংস করে দেয় ruc হতে পারে আমদানির আগে আপনার ঘরগুলি ফর্ম্যাট করতে হবে।
অ্যাডাম ইবারবাচ

এটি অবশ্যই স্পষ্টভাবে করে।
হেনরিয়্যারন

0

হুজ্জাহ, এই উত্তর এবং অন্যদের জন্য ধন্যবাদ , নিম্নলিখিত সুবিধাগুলি সহ এখন একটি পদ্ধতি রয়েছে:

  • এক্সেলের পাশাপাশি নাম্বারেও কাজ করে
  • স্বয়ংক্রিয় করা যেতে পারে।
  • নম্বর অদৃশ্য।
  • আমদানি থেকে রফতানি পর্যন্ত শূন্য-প্রভাব সিএসভি ফাইল উত্পাদন করে।

কৌশলটি হ'ল প্রতিটি ক্ষেত্রকে অ্যাডোসট্রোফের সাথে উপসর্গ করা বা ডাবল উদ্ধৃতিগুলিতে মোড়ানো নয়, বরং উপসর্গ সহ ="এবং প্রত্যয় দেওয়া "। আমদানিতে নম্বরগুলি ক্ষেত্রের বিষয়বস্তুকে স্ট্রিং হিসাবে বিবেচনা করে এবং রফতানিতে এটি উপসর্গ এবং প্রত্যয়টি ফেলে দেয়।

এখানে একটি সহজ একটি লাইনার রয়েছে যা একটি ফাইলটিকে প্রাক প্রক্রিয়া করে my.csv:

sed 's/^/="/;s/,/",="/g;s/$/"/' my.csv | sed 's/=""//g' > tmp.csv

প্রথমটি প্রতিটি লাইনের শুরুতে sedরাখে =", প্রতিটি কমাতে পরিবর্তিত হয় ",=", তারপরে প্রতিটি লাইনটি শেষ করে "sedএরপরে দ্বিতীয়টি খালি ক্ষেতগুলি সরিয়ে দেয় কারণ সংখ্যাগুলি তাদের উপর চাপ দেয়। পরিশেষে এটি নামক একটি ফাইল লিখুন যা tmp.csvদ্বিগুণ ক্লিক করা বা openনম্বরগুলিতে আমদানি করতে পাস করা যেতে পারে।

অনুশীলনে এটি যে কোনও ক্ষেত্রের মধ্যে কমা রয়েছে সেগুলি গারবে। আপনি কেবল সেই ক্ষেত্রগুলিকে কেবল সংখ্যা দিয়ে শুরু করা মোড়ানো থেকে ভাল হতে পারেন তবে তারপরে আপনার প্রতিটি লাইনের শুরু এবং শেষ এবং আপনার নিয়মিত প্রকাশের সংস্করণ সম্পর্কে সতর্কতা অবলম্বন করা উচিত। এটি ম্যাকোজে করবে:

sed -E 's/(^|,)([[:digit:]][^,]*)($|,)/\1="\2"\3/g'

এটি হ'ল লাইনটির শুরুর সাথে কমা বা একটি কমা, একটি অঙ্ক এবং তারপরে কোনও সংখ্যক অক্ষর যা কমা নয়, তারপরে লাইনের শেষে বা অন্য কোনও কমা। একই শুরু এবং শেষের সাথে প্রতিস্থাপন করুন তবে মাঝের বিটটি মোড়ানো ="এবং এর সাথে "

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.