Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Всем привет ! Какой быстрый способ существует на PERL для замены значения столбцах CSV строки? Требуется значение всех столбцов заменить на пустую строку, кроме заранее определенных столбцов. Пример исходная строка a,b,c,d,e Требуется оставить значение 3 и 5 столбца. конечная строка ,,c,,e ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:10 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
split по разделителю полей. Если только разделитель не попадет внутрь поля.... Потом собрать из нужных полей строку. Как вариант, регуляркой заменить ненужное на пустую строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:17 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
[quot vkle]split по разделителю полей. Если только разделитель не попадет внутрь поля.... Потом собрать из нужных полей строку. Как вариант, регуляркой заменить ненужное на пустую строку.[/quot Как регуляркой указать столбец ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:18 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1Как регуляркой указать столбец ?Столбец явно - никак. Только на разделители ориентироваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:24 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
vkleTestor1Как регуляркой указать столбец ?Столбец явно - никак. Только на разделители ориентироваться. А что будет быстрее сплит или регулярка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:33 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
split регулярки использует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 07:53 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
FatalPerlErrorsplit регулярки использует Тогда эффективнее писать цикл, который посимвольно анализирует строку на наличие разделителей и опеределяет номер столбца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 10:07 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Кстати, существует модуль Text::CSV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 10:13 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
FatalPerlErrorКстати, существует модуль Text::CSV Он входит в стандартную поставку при установке Perl на Sun машины? Если нет, то не смогу воспользоваться этим модулем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 10:34 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1, У меня есть код на C# того, что мне нужно. Я там также использую посимвольный анализ. Perl плохо знаю и непривычно писать на нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 10:44 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1, Мож на awk подойдет однострочник вроде такого? Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 11:07 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1Testor1, У меня есть код на C# того, что мне нужно. Я там также использую посимвольный анализ. Perl плохо знаю и непривычно писать на нем. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 14:08 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
S_Andrey_ATestor1Testor1, У меня есть код на C# того, что мне нужно. Я там также использую посимвольный анализ. Perl плохо знаю и непривычно писать на нем. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Очень и очень не привычный стиль. Пример активно использует регулярки, а значит будет снижение производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 09:37 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
S_Andrey_A, Возможно ли в mask прописать id обязательных столбцов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 23:22 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1, массив mask это типа битовой маски 1- соответствующее поле оставляем, 0 - поле выключаем. Ну по идее можно переписать и указывать конкретные номера полей которые надо оставить. На счет использования регулярок и производительности -наврядли это окажет какое то замедление. В принципе можно от них избавиться, но смысла в этом я не вижу(ИМХО) ps: $res=~s/,$//; -- отрезаем финишную запятую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 10:57 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
S_Andrey_ATestor1, массив mask это типа битовой маски 1- соответствующее поле оставляем, 0 - поле выключаем. Ну по идее можно переписать и указывать конкретные номера полей которые надо оставить. На счет использования регулярок и производительности -наврядли это окажет какое то замедление. В принципе можно от них избавиться, но смысла в этом я не вижу(ИМХО) ps: $res=~s/,$//; -- отрезаем финишную запятую. Не могу понять в какую часть кода мне впихнуть регулярное выражения для обработки конкретного столбца. Понимаю что в $_ часть нужной подстроки из выражения map {$res.=$_ if $i++~~@mask;$res.="|".$_} Как $_ пропустить через регулярное выражения, чтобы сделать подмену ? Мне нужно к слову 12 заменять на 23 только для выбранной подстроки #!/usr/bin/perl while($file_line=<STDIN>) { @mask=(0,4); $i = 0; for($file_line) { print $file_line; map {$res.=$_ if $i++~~@mask;$res.="|".$_} split /\|/, $file_line; $res=~s/\|$//; print $res; exit; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 11:08 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1, s/pattern1/pattern2/ - заменяет шаболн1 на шаблон2 в переменной $_ - в любом месте. в моем примере можно вот так Код: coco 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. - в каждом поле заменит Ц на КЦ ps: что значит $i++~~@mask; я хз _) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 12:37 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Чучуть лишнего запостил...Хотя так тоже можно ... вот так все норм. Код: ruby 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 12:39 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
S_Andrey_AЧучуть лишнего запостил...Хотя так тоже можно ... вот так все норм. Код: ruby 1. 2. 3. 4. 5. 6. 7. 8. 9. не могу привыкнуть к коду перла. когда нет присвоений и переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 17:27 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Можно написать намного проще: test.pl Код: ruby 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. file.csv a,b,c,d,e,f a,b,c,d,e,f a,b,c,d,e,f a,b,c,d,e,f ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 15:07 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
TheAthleteМожно написать намного проще: test.pl Код: ruby 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. file.csv a,b,c,d,e,f a,b,c,d,e,f a,b,c,d,e,f a,b,c,d,e,f а что с производительностью ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 15:21 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1S_Andrey_AЧучуть лишнего запостил...Хотя так тоже можно ... вот так все норм. Код: ruby 1. 2. 3. 4. 5. 6. 7. 8. 9. не могу привыкнуть к коду перла. когда нет присвоений и переменных. Здесь нет ничего сложного: my $in="c,b,csdsdcd,d00000,e,f"; # определяется скаляр (единичное значение, поэтому $ вначале) с нужным значением my @mask=(1,0,1,1,0,1); # определяется массив (множественное значение, поэтому @ вначале) с нужными значениями Насчет переменных $res и $i думаю понятно map здесь работает в void-контексте, т.е. массив, который он обычно возвращает либо в переменную либо в функцию, по-сути никуда не возвращается. Его в случае необходимости можно легко заменить на for или while, например так: Код: ruby 1. 2. 3. 4. 5. $res=~s/,$//; # удаляет последнюю запятую с помощью оператора s/// из переменной $res ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 15:25 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1а что с производительностью ? все зависит от размера файла. Если очень большой, то очень неплохая, это касается памяти. Использование Tie::Array::CSV гораздо медленнее, чем загрузка всех данных в память с последующей обработкой (например, с помощью my @lines = <FILE>), но зато оно лучше подходит для очень больших файлов, которые не могут одновременно находиться в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 15:37 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Код: php 1. Память не зависит от размера файла. Можно чуть быстрее, ценой увеличения длинны отднострочника и этот однострочник подвержен запятым в кавычках в поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 17:24 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=59&tid=1461669]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
9ms |
check topic access: |
9ms |
track hit: |
45ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 455ms |

| 0 / 0 |
