2015-04-07 3 views
0

Я ищу быстрый способ удалить ведущие нули из первого столбца CSV-файла, чтобы он был приятно поглощен другой программой. если это возможно, было бы здорово также преобразовать его из раздела с запятой в разделитель табуляции, но это может быть отдельный вопрос.Удаление ведущих нулей из 1 столбца файла csv

здесь имена заголовков (нужно только раздеться ведущим (2) нулями из студенческого билета):

"Student ID","School Name","Contact Relation","Contact First Name","Contact Last Name","Salutation"," Home Phone Number","Address Line 1","Address Line 2","City","State","Zip","Zip + 4","Work Phone","Cell Phone","Pager","Residential Status","Custodial Status" 

и вот некоторые выборочные данные, чтобы увидеть, как он отформатирован:

"004000031","Local High School","Mother","FirstName","LastName","","555-5557773","555 Old Midlothian Tpke","Lot77","Richmond","VA","23222","","","","","","Y" 
+0

Если вы работаете в Linux, есть вероятно, представляют собой различные инструменты командной строки, которые вы можете использовать для этого, и можете использовать их в конвейере для своей программы. Вы настаиваете на том, что ответ является Java-программой? Вы знаете о конвейерной обработке, и это хорошее решение для вас? – RealSkeptic

+0

моей начальной реакцией была Java, так как это то, к чему я привык, но этого не должно быть. –

+0

Что вы пробовали? Можете ли вы опубликовать его? Каким типом данных вы пытаетесь манипулировать (вы просто показываете необработанные данные, но в какой форме вы его превратили, String?)? – kuporific

ответ

0

Модифицированный код XML, который был генерирующий файл CSV. просто нужно добавить/изменить 2 строки

<field id="stdIDLocal" header-source="field" header-value="Student ID"  find="00" replaceFirst="" /> 

Чтобы преобразовать выход из CSV в Таб-разделителями файл с помощью следующей XML заявление в теге:

<export table-id="tblStudent" header-row="true" value-delimiter="&#09;" > 
-1

Этот perl должен сделать это за вас.

Первое выражение удаляет первые два нуля каждой строки. Второй изменяет ,, на вкладку.

perl -pne 's/^00//;s/,/\t/g' your_file.txt

+0

Это вопрос Java. – Oli

0

Эта линия должна сделать:

String[] tokens = String.join("\t", csv.replaceFirst("^\"0*", "\"").split(",")); 
+0

Это не компилируется, я думаю, вы забыли закрыть 'join' перед вызовом' split'. Кроме того, что, если идентификатор студента имеет более двух ведущих нулей? Затем будет удалено более двух символов. Я думаю, что regex немного за бортом, если каждый ID * определенно * содержит два ведущих 0. – kuporific

+0

@Oli: удалить '[]' и он работает; 'join' и' split' просто прекрасны. Некоторые объяснения были бы приятными. Может быть, решение не очевидно для всех. – Trinimon

Смежные вопросы