عامل منجم سريع:كسف مع الأرقام الحقيقية مع الفواصل بدلا من النقاط
-
28-10-2019 - |
سؤال
لدي مشكلة في استيراد ملف كسف مع رابيدمينر.تتم كتابة قيم الفاصلة العائمة بفواصل بدلا من النقطة الفاصلة بين القيم الصحيحة والقيم العشرية.
أي شخص يعرف كيفية استيراد القيم المنسقة بهذه الطريقة بشكل صحيح?
بيانات العينة:
BMI;1;0;1;1;1;blue;-0,138812155;0,520378909;5;0;50;107;0;9;0;other;good;2011
BMI;1;0;1;1;1;pink;-0,624654696;;8;0;73;120;1;3;0,882638889;other;good;2011
عامل منجم السريع يفسر في الواقع بأنها"متعدد الحدود".إجبارها على" حقيقي "يؤدي فقط إلى التفسير الصحيح للقيمة" 0".
شكرا
المحلول
استخدم شبه القولون كمحدد.يمكنك استخدام java.util.Scanner
لقراءة كل سطر. String.split()
لتقسيم على شبه القولون.عندما تحصل على رمز مميز بفاصلة ، يمكنك استخدامه String.replace()
لتغيير الفاصلة إلى رقم عشري.ثم يمكنك استخدام Float.parseFloat()
نأمل أن يكون هذا يجيب عليك السؤال.
نصائح أخرى
يبدو أن هذا طلب قديم جدا.لست متأكدا مما إذا كان هذا سيساعدك ، ولكن هذا قد يساعد الآخرين في موقف مماثل.
الخطوة 1:في عامل تشغيل "قراءة كسف" ، ضمن "معالج تكوين الاستيراد" ، تأكد من تحديد" فاصلة منقوطة " كفاصل
الخطوة 2:استخدم عامل تشغيل "أنواع التخمين".نوع مرشح السمة - > مجموعة فرعية ، حدد السمات - > حدد السمات 8 و 9 و 16 (بناء على المثال أعلاه) ، وقم بتغيير "حرف الفاصلة العشرية" إلى " ، " ويجب أن تكون جاهزا تماما.
آمل أن يساعد هذا (شخص ما!)
public static void main(String args){
BufferedReader br = new BufferedReader(new FileReader("c:\\path\\semicolons and numbers and commas.csv"));
try {
for(String line; (line=br.readLine()) != null);) {
//Variable line now has a single line from the file. This code will execute for each line.
String array = line.split(";");// Split on the semicolon. Beware of changing this. This uses regex which means that some characters mean something like . means anything, not just dots.
double firstDouble = Double.parseDouble(array[7].replace(',','.')); // Get field 7 (the eighth field) and turn it into a double (high precision floating point). Replace , with . so it will not make an error
System.err.println("Have a number " + firstDouble);
System.err.println("Can play with it " + (firstDouble * 2.0));
}
}finally{
br.close(); // Free resources (and unlock file on Windows).
}
}