البرمجة

مقارنة وإزالة بيانات CSV في Java

الكود الذي قدمته يبدو أنه يقوم بمقارنة ملفي CSV وإزالة التفاصيل الكاملة من أحدهما باستخدام العمود الأول في كل ملف. ومع ذلك، يبدو أن هناك بعض المشاكل في الطريقة التي يتم بها إنشاء الملف الناتج. سأقوم بتعديل الكود لتحقيق الهدف المطلوب.

أولاً، لنقم بتنظيف البيانات وإزالة الأسطر الفارغة من الملفين CSV. بعد ذلك، سنقوم بمقارنة العمود الأول في كل ملف ونقوم بإزالة الصفوف التي تتطابق مع القيم في العمود الأول من الملف الآخر. ثم سنقوم بكتابة البيانات المتبقية إلى ملف جديد.

اليك الكود المعدل:

java
import java.io.*; import java.util.*; public class CompareCSV { public static void main(String args[]) { try { String file1Path = "C:/Users/bida0916/Desktop/macro.csv"; String file2Path = "C:/Users/bida0916/Desktop/Deprecated.csv"; String outputPath = "C:/Users/bida0916/Desktop/NewMacro.csv"; List file1Data = readCSV(file1Path); List file2Data = readCSV(file2Path); file1Data.retainAll(file2Data); // Remove common elements writeCSV(outputPath, file1Data); } catch (IOException e) { e.printStackTrace(); } } // Read data from CSV file private static List readCSV(String filePath) throws IOException { List data = new ArrayList<>(); BufferedReader reader = new BufferedReader(new FileReader(filePath)); String line; while ((line = reader.readLine()) != null) { String[] rowData = line.split(","); if (rowData.length > 0 && !rowData[0].isEmpty()) { // Check if row is not empty data.add(rowData[0]); // Add only the first column data } } reader.close(); return data; } // Write data to CSV file private static void writeCSV(String filePath, List data) throws IOException { FileWriter writer = new FileWriter(filePath); for (String row : data) { writer.append(row); writer.append("\n"); } writer.flush(); writer.close(); } }

تم تعديل الكود ليقرأ ويكتب البيانات بشكل أكثر دقة. قمت بإعادة ترتيب الخطوات وتبسيطها لتحقيق الهدف المطلوب. يقوم الكود الآن بقراءة البيانات من كل ملف CSV، ومن ثم يقوم بمقارنتها وإزالة الصفوف المتطابقة بناءً على القيم في العمود الأول. وأخيراً، يقوم بكتابة البيانات المتبقية إلى ملف جديد.

المزيد من المعلومات

بعد إجراء التعديلات اللازمة على الكود، يمكن الآن استخدامه لمقارنة ملفي CSV وإزالة البيانات المتكررة باستخدام العمود الأول في كل ملف. الآن سنقوم بتوضيح عملية الكود وكيفية استخدامه.

أولاً، يقوم البرنامج بقراءة بيانات الملفين CSV باستخدام الدالة readCSV(). هذه الدالة تقوم بفتح ملف CSV، وقراءة البيانات منها، وتخزين القيم في قائمة. يتم قراءة البيانات من العمود الأول فقط باستخدام الفهرس 0 من كل صف.

ثم، يتم استخدام الدالة retainAll() لمقارنة البيانات الموجودة في القوائم المسترجعة من كل ملف. هذه الدالة تقوم بإزالة العناصر التي لا توجد في كلا الملفين، مما يعني أن البيانات المتكررة في العمود الأول من كل ملف سيتم الاحتفاظ بها.

أخيرًا، يتم استخدام الدالة writeCSV() لكتابة البيانات المتبقية إلى ملف جديد. تقوم هذه الدالة بفتح ملف CSV للكتابة، وتكتب البيانات المتبقية من القائمة في الملف الجديد.

يمكن تشغيل البرنامج من خلال تحديد مسارات الملفات المطلوبة للملفات الثلاثة: الملفات الاثنين المراد مقارنتها والملف الجديد الذي سيتم إنشاؤه. بمجرد تشغيل البرنامج، ستتم عملية المقارنة وإنشاء الملف الجديد الذي يحتوي على البيانات المتبقية بعد القيام بعملية الاستبقاء.

هذه العملية مفيدة عند العمل مع ملفات CSV التي تحتوي على بيانات متكررة وترغب في إزالة البيانات المكررة والاحتفاظ بالفقط بالبيانات الفريدة. تطبيق هذا البرنامج يسهل عملية تحليل البيانات وتنظيفها، ويوفر وقتاً وجهداً في عمليات المعالجة والتحليل الضخمة.

زر الذهاب إلى الأعلى