নোটপ্যাড ++ - কমা দ্বারা পৃথক করা ফাইলের প্রথম কলামটি সরানো হচ্ছে


14

আমার কাছে একটি বড় সিএসভি ফাইল রয়েছে যা আমার প্রথম কলামের ডেটা সরিয়ে ফেলতে হবে। এক্সেল এটিকে খুলতে পারি না কারণ এক্সেল কলামগুলির কিছু মানকে বৈজ্ঞানিক সংখ্যায় রূপান্তর করে।

আমি নোটপ্যাড ++ ব্যবহার করছি এবং আমি EXE ফাইলটি থেকে প্রথম কলামটি স্ট্রিং করার চেষ্টা করছি,

1,Value1,value2,value3,value4,value5
3445,Value1,value2,value3,value4,value5
12345,Value1,value2,value3,value4,value5
1234,Value1,value2,value3,value4,value5
11,Value1,value2,value3,value4,value5

দেখতে

Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5

উত্তর:


13

নোটপ্যাড ++ এর অনুসন্ধান এবং প্রতিস্থাপন নিয়মিত এক্সপ্রেশন (রেজেক্স) সমর্থন করে যা এর জন্য সহজেই ব্যবহার করা যেতে পারে।

অনুসন্ধানের জন্য নিম্নলিখিত রেজেেক্স ব্যবহার করুন:

^[^,]+,(.+)

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

বিশ্বব্যাপী এটি দিয়ে প্রতিস্থাপন:

\1

এটি প্রথম সাবম্যাচটিকে বোঝায় (বাকী রেখাটি)। এর দ্বারা প্রতিটি লাইন প্রথম কলাম এবং কমা পরে সমস্ত কিছু দ্বারা প্রতিস্থাপিত হয়।

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


দ্রষ্টব্য:^[^,]+, খালি স্ট্রিংয়ের সাথে সংক্ষিপ্ত রেজেক্সটি বিশ্বব্যাপী প্রতিস্থাপনের জন্য ব্যবহার করা যাবে না কেননা নোটপ্যাড ++ এর পরে সর্বশেষ ব্যতীত সমস্ত কলামগুলি প্রতিস্থাপন করবে: প্রথম কলামটি প্রতিস্থাপনের পরে, দ্বিতীয় কলামটি (যা এখন প্রথম এবং সঠিকভাবে রেজেক্সের সাথে মেলে) প্রতিস্থাপন করা হবে, তৃতীয়, এবং আরও। যাইহোক, খাটো Regex পুরোপুরি অন্যান্য সম্পাদকদের সাথে (যেমন সঙ্গে কাজ করে PSPad বা তেজ )।


এই এখানে যাওয়ার উপায়। যদি ওপিতে ইতিমধ্যে N ++ থাকে তবে এটি দ্রুততম উপায়। আমি পিএসপ্যাডের সাথে এটি অনেক কিছু করি (যা একসাথে এটি করতে পারে, বিটিডব্লিউ)। রেজেেক্স
r

নোটপ্যাড ++ ইনপুট লাইনটি লাইন প্রক্রিয়াকরণ করে না, তবে চরিত্র অনুসারে অক্ষর। এর কিছু ঝরঝরে সুবিধা রয়েছে (যেমন মাল্টি-লাইনের নিদর্শন) patterns
ডেনিস

সম্পাদনার জন্য +1। দুঃখের বিষয়, আপনার উত্তরটি এখন সম্প্রদায়ের উইকি।
ডেনিস

@ ডেনিস হ্যাঁ, আমি প্রায়শই সম্পাদনা করেছি কারণ আমি 10-সম্পাদনার সীমা সম্পর্কে অবগত ছিলাম না।
স্পিকার

কেন ^[^,]+,এবং খালি সঙ্গে প্রতিস্থাপন করবেন না ?
নিটল

10

Ctrl+ টিপুন Hএবং নিম্নলিখিত প্রতিস্থাপন সম্পাদন করুন:

Find what:          .*?,(.*)
Replace with:       \1
Wrap around:        checked
Regular expression: selected
. matches newline:  unchecked

সমস্ত উপস্থিতি প্রতিস্থাপন করতে এখন Alt+ টিপুন A

কিভাবে এটা কাজ করে

  • রেগুলার এক্সপ্রেশন .*?,(.*) একটি সম্পূর্ণ লাইন মেলে:

    • .*?, প্রথম কমাতে আগে কমা সহ সমস্ত কিছু মেলে।

      .*মানে যে কোনও চরিত্রের সংখ্যক ঘটনা, এবং প্রশ্ন চিহ্নটি কোয়ান্টিফায়ারকে অলস করে তোলে , অর্থাত্ এটি যতটা সম্ভব অক্ষরের সাথে মেলে।

    • (.*) প্রথম কমা পরে সমস্ত কিছু মেলে।

      আবদ্ধ .*প্রথম বন্ধনী ধর্মান্তরিত একটি subpattern সেটিকে, তাই মাস্তুল প্রতিস্থাপন মাঠে অ্যাক্সেস করতে পারবেন।

  • \1প্রথম সাবম্যাচ প্রতিনিধিত্ব করে (এর জন্য মিল (.*))।

    ফলস্বরূপ, নোটপ্যাড ++ প্রথম কমা অনুসরণ করে এমন সমস্ত কিছু দ্বারা লাইনটি প্রতিস্থাপন করে।


খালি স্ট্রিং দিয়ে বিশ্বব্যাপী প্রতিস্থাপন করা নোটপ্যাড ++ এ কাজ করবে না তা দেখার পরে ঠিক একই ধারণা পেয়েছি ^[^,]+,। (+1)
স্পিকার

6

উইন্ডোজ, আপনি নিম্নলিখিত হিসাবে এটি করতে পারেন।

for /F "tokens=2,3,4,5,6 delims=," %i in (Input.csv) do @echo %i,%j,%k,%l,%m  >> output.csv

আমি ধরে নিয়েছি যে আপনার কাছে মাত্র 6 টি কলাম রয়েছে। আপনার যদি আরও অনেক কলাম থাকে তবে টোকেন ক্ষেত্রে * পরীক্ষা করার চেষ্টা করুন। কমান্ডের জন্য উইন্ডোজ থেকে আইডিয়া নেওয়া হয়


2
কলামগুলির নির্বিচারে সংখ্যার জন্য, এটি ব্যবহার করুন:for /F "tokens=1* delims=," %i in (Input.csv) do @echo %j >> output.csv
সানসি

3

ধরে নেওয়া যাক আপনি একটি লিনাক্স সিস্টেম বা কিছু UNIX শৈলী পরিবেশ আছে (আমি gow , অথবা আপনি বন্ধ ইউটিলিটি snarf করতে unixutils ) আমি মাধ্যমে ফাইল চলমান বিশ্বাস cut -d , -f2-6কৌতুক করতে হবে - এটি করা উচিত, যদি আমি সঠিকভাবে স্মরণ কৌতুক করতে হবে - -dসেট করে বিস্ময়কর এবং f2-6দ্বিতীয় থেকে 6th ষ্ঠ অক্ষর মুদ্রণ করে।

cat input.csv | cut -d , -f2-6 > output.csvইনপুট ফাইল গ্রহণ এবং একটি আউটপুট ফাইল লাথি আউট কৌশল করবে। এটি নোটপ্যাড ব্যবহার করছে না, তবে এটি দ্রুত এবং সত্যই সহজ।


ধন্যবাদ, আমি কেবল লিঙ্কটিতে ক্লিক করেছি এবং আমি একটি 403 ত্রুটি পেয়েছি?
মাইকড

উভয় লিঙ্কই আমার পক্ষে কাজ করে - যা জঘন্য। আমি সাধারণত এটির জন্য গুগল করে গা খুঁজে পাই - এটি বামতজেল সম্পর্কিত গিথুব রেপোতে। সাইগউইনও বিকল্প হতে পারে, তবে এই ধরণের জিনিসটির জন্য এটি একটি ওভারকিল
জার্নম্যান গিক

2

আপনি সিএসভিকে এক্সেলে রূপায়িত করতে সক্ষম হবেন এবং এটি সংখ্যাকে পাঠ্য হিসাবে বিবেচনা করুন (এটিকে বৈজ্ঞানিক সংখ্যায় রূপান্তর করা থেকে বিরত করবেন)।

  1. এক্সেল খুলুন
  2. ডেটা ট্যাব
  3. পাঠ্য থেকে
  4. ডিলিমিটেড নির্বাচন করুন
  5. অন্যান্য চয়ন করুন: ","
  6. সমস্ত কলামের জন্য এগুলি ডেটা প্রিভিউ উইন্ডোতে নির্বাচন করুন এবং পাঠ্য চয়ন করুন
  7. আপনার কলামটি সরান
  8. CSV হিসাবে সংরক্ষণ করুন

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

এটি দুর্দান্ত কাজ করেছে! আপনাকে ধন্যবাদ
মাইকড

@ সিম্বাবাক আমি বলব যে এটি সামান্য অন্যায়, আমি এটি বড় আকারের ডেটাসেটের জন্য উত্পাদন পরিবেশে সফলভাবে ব্যবহার করেছি যার জন্য ম্যানিপুলেশন প্রয়োজন - স্বীকারোক্তি যে কখনও কখনও এটি একটি দুঃস্বপ্ন ছিল। এক্সেলের অপ্রত্যাশিত উপায়ে ডেটা পরিবর্তন করার অভ্যাস আছে তবে আমি বলব না যে এই ঝুঁকিটি অন্যান্য পদ্ধতির চেয়ে বিশেষ করে বেশি ছিল।
জেমস উড

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

oi নিখরচায় অপরাধ গ্রহণ করা নয়: ডি
জেমস উড

1

নোটপ্যাড ++ এ বিল্ট-ইন কলাম সম্পাদনা এবং লাইন আপ বাই (,) কমান্ড (টেক্সটএফএক্স প্লাগইন) একটি গ্রাফিকাল পয়েন্ট-ও-ক্লিক সমাধান দেয় যা সম্ভবত প্রথমবারের মতো হতে পারে। এটি নিয়মিত এক্সপ্রেশন বা শেল প্রোগ্রামিং ব্যবহার করা এড়ানো যায় না, উভয়ই সাধারণত কিছু ডিবাগিংয়ের প্রয়োজন হয় যতক্ষণ না তারা আপনার যা চান ঠিক তেমন করে এবং আরও কিছু না।

শুরুর পয়েন্ট : কলামগুলি বিভ্রান্তযুক্ত সহ সিএসভি ফাইল, তাই কলাম দ্বারা সম্পাদনা করা সহজ নয় ...

    1,Value1,value2,value3,value4,value5
    3445,Value1,value2,value3,value4,value5
    12345,Value1,value2,value3,value4,value5
    1234,Value1,value2,value3,value4,value5
    11,Value1,value2,value3,value4,value5
    ...

পদ্ধতি:

  1. আগ্রহের সারিগুলি নির্বাচন করুন - সম্ভবত পুরো ফাইলটি।

  2. মেনু কমান্ড টেক্সটএফএক্স> টেক্সটএফএক্স সম্পাদনা করুন> কমা দ্বারা একাধিক লাইনের লাইন আপ করুন,, (এই) কলাম দ্বারা সমস্ত সারি লাইন করে কলাম সম্পাদনা সহজ করে তোলে।

    1    ,Value1,value2,value3,value4,value5
    3445 ,Value1,value2,value3,value4,value5
    12345,Value1,value2,value3,value4,value5
    1234 ,Value1,value2,value3,value4,value5
    11   ,Value1,value2,value3,value4,value5
    
  3. প্রথম কমা (,) এর পরে কলামে কলাম মোড প্রবেশ করুন স্বল্প সংখ্যক সারিগুলির জন্য কীবোর্ড কমান্ডগুলি ব্যবহার করুন: Alt + Shift + DownArrow।
    যদি অনেকগুলি সারি (বৃহত ফাইল) এ কাজ করার প্রয়োজন হয় তবে Alt + মাউস ব্যবহার করুন এবং প্রথম লাইনের পছন্দসই কলামটি ক্লিক করুন , তারপরে ফাইলটির শেষ লাইনে চলে যান এবং Alt + Shift + একই কলামের অবস্থানে ক্লিক করুন। এটি ENTRE ফাইলে কলাম মোড সক্রিয় করে - আপনার সমস্ত কমাগুলির পিছনে একটি উল্লম্ব লাইনটি দেখতে পাওয়া উচিত।

  4. কলাম মোডে মুছুন অক্ষরের পুরো কলামটি সরিয়ে দেয়। সুতরাং আপনি একবারে পেতে সমস্ত সারিতে প্রথম কমা করার আগে সমস্ত কিছু মুছতে পারেন:

    Value1,value2,value3,value4,value5
    Value1,value2,value3,value4,value5
    Value1,value2,value3,value4,value5
    Value1,value2,value3,value4,value5
    Value1,value2,value3,value4,value5
    

সম্পন্ন!

এখনও অবধি পরামর্শ দেওয়া বিভিন্নের সাথে এই সমাধানটির বিষয়ে মন্তব্য করুন:

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

উদাহরণস্বরূপ, আপনি যদি ২ য় কলাম, বা Nth কলামটি দ্রুত মুছে ফেলার সিদ্ধান্ত নিয়ে থাকেন তবে এই পদ্ধতিটি প্রায় কোনও পরিবর্তন ছাড়াই কাজ করে।

অন্যদিকে নিয়মিত এক্সপ্রেশন, শেল স্ক্রিপ্টগুলি লক্ষ্যটি সম্পাদন করবে, হ্যাঁ, তবে জটিল সমস্যাগুলির মধ্যে আপনি আপনার সিনট্যাক্সটিকে "ডি-বাগিং" বেশি সময় ব্যয় করবেন।

নোটপ্যাড ++ এর বহুমুখী বিল্ট-ইন কার্যকারিতা এর অন্যতম প্রধান শক্তি: আপনি "প্রোগ্রামিং" অবলম্বন না করেই বেশ খানিকটা শক্তি অর্জন করেন।


0

আপনি যদি নোটপ্যাড ++ এর জন্য পাইথন কনসোল প্লাগইনটির সাথে পরিচিত হন তবে আমি আপনাকে অন্য একটি পদ্ধতির পরামর্শ দিতে পারি। আপনাকে নোটপ্যাড ++ নথিতে আপনার পাঠ্য যুক্ত করতে হবে এবং কনসোলে পরবর্তী স্ক্রিপ্টটি সম্পাদন করতে হবে:

res = []
data = editor.getText().split('\r\n')
for i in data:
    res.append(i.split(',')[1:])

for i in res:
    editor.addText(', '.join(i)+'\r\n')

এই স্ক্রিপ্টটি আপনার বর্তমান নোটপ্যাড ++ নথিতে ফলাফল পাঠ্য যুক্ত করেছে।


-1

চালান vim(কমান্ড মোডে, যদি চাপানো না যায়)

প্রথম কলামটি qকীতে সরানোর ক্রিয়াটি মানচিত্র করতে নিম্নলিখিত কমান্ডটি টাইপ করুন :

:map q 0df,j0

যার অর্থ:

  • 0 - লাইনের শুরুতে যান
  • df,- ডি অবধি সমস্ত কিছু , চরিত্র (কমা সহ),
  • j - এক লাইন নিচে যান
  • 0 - লাইনের শুরুতে যান

তারপরে সমস্ত লাইনে এই ক্রিয়াটি প্রয়োগ করুন:

:0,$ normal q

যার অর্থ, qশুরু (0) থেকে শেষ ($) পর্যন্ত কীটি বরাদ্দ করা কর্মটি চালান ।


কেন কেবল একটি একক বিশ্বব্যাপী প্রতিস্থাপন করা হচ্ছে না :%s/^[^,]\+,//g?
স্পিকার

আপনি এটিও করতে পারেন, এইটি ব্যবহার করা সহজ এবং রেগেক্সের চেয়ে বোঝা সহজ :) সাধারণত আমি সবসময়ই বিভ্রান্ত হয়ে পড়েছি যে কোন চরিত্রটি থেকে বাঁচতে পেরেছি, তাই আমি বহুবার একই রেজেক্স টাইপ করে শেষ করছি।
কেনারব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.