powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
17 сообщений из 17, страница 1 из 1
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754570
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
Приходится удалять первые 7 строк вручную, так как чтение из файла захлебывается

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
$f = fopen("2011-January.csv", "rt") or die("Ошибка!");
while (!feof ($f)) {
  $buffer = fgets($f, 4096);
 $data = explode(";", $buffer);

 if ($data[5]=="ШТЛ"){$shtl=$shtl+1;}
 if ($data[5]=="В"){$v=$v+$data[6];}
 if ($data[5]=="ВСВ"){$vsv=$vsv+$data[6];}
 if ($data[5]=="ВЮВ"){$vuv=$vuv+$data[6];}
 if ($data[5]=="З"){$z=$z+$data[6];}
 if ($data[5]=="ЗСЗ"){$zsz=$zsz+$data[6];}
 if ($data[5]=="ЗЮЗ"){$zuz=$zuz+$data[6];}
 if ($data[5]=="С"){$s=$s+$data[6];}
 if ($data[5]=="СВ"){$sv=$sv+$data[6];}
 if ($data[5]=="СЗ"){$sz=$sz+$data[6];}
 if ($data[5]=="ССВ"){$ssv=$ssv+$data[6];}
 if ($data[5]=="ССЗ"){$ssz=$ssz+$data[6];}
 if ($data[5]=="Ю"){$u=$u+$data[6];}
 if ($data[5]=="ЮВ"){$uv=$uv+$data[6];}
 if ($data[5]=="ЮЗ"){$uz=$uz+$data[6];}
 if ($data[5]=="ЮЮВ"){$uuv=$uuv+$data[6];}
 if ($data[5]=="ЮЮЗ"){$uuz=$uuz+$data[6];}
}





.csv# Метеостанция Москва (ВВЦ), Россия, WMO_ID=27612, выборка с 01.01.2011 по 31.01.2011, все дни
# Кодировка: ANSI
# Данные предоставлены WEB-сайтом "Расписание Погоды", rp5.ru
# Пожалуйста, при использовании данных, любезно указывайте названный сайт.
# Обозначения метеопараметров см. по адресу http://rp5.ru/archive.php?wmo_id=27612&lang=ru
#
"Местное время в Москве (ВВЦ)";"T";"Po";"P";"U";"DD";"Ff";"ff10";"ff3";"N";"WW";"W1";"W2";"Tn";"Tx";"Cl";"Nh";"H";"Cm";"Ch";"VV";"Td";"RRR";"tR";"E";"E'";"sss"
"31.01.2011 22:00";"-10.6";"749.0";"764.4";"90";"ШТЛ";"0";"";"";"100%.";"Дымка.";"Облака покрывали более половины неба в течение одной части соответствующего периода и половину или менее в течение другой части периода.";"Облака покрывали более половины неба в течение одной части соответствующего периода и половину или менее в течение другой части периода.";"";"-6.0";"";"Облаков нет.";"2000-2500";"";"Перистые (часто в виде полос) и перисто-слоистые, распространяющиеся по небу и в целом обычно уплотняющиеся; сплошная пелена, поднимающаяся над горизонтом выше 45°, не покрывает всего неба.";"";"-11.9";"";"";"";"";"";
"31.01.2011 19:00";"-9.9";"749.1";"764.4";"81";"ШТЛ";"0";"";"";"10% или менее, но не 0";"";"";"";"";"";"";"Облаков нет.";"2000-2500";"";"Перистые нитевидные, иногда когтевидные, не распространяющиеся по небу.";"";"-12.5";"";"";"";"";"";
"31.01.2011 16:00";"-6.8";"748.5";"763.6";"66";"С";"2";"";"";"Облаков нет.";"Состояние неба в общем не изменилось.";"Метель";"Облака покрывали половину неба или менее в течение всего соответствующего периода.";"";"";"";"";"";"";"";"10.0";"-12.0";"";"";"";"";"";
"31.01.2011 13:00";"-7.8";"747.7";"762.8";"73";"С";"2";"";"";"Облаков нет.";"Состояние неба в общем не изменилось.";"Метель";"Облака покрывали половину неба или менее в течение всего соответствующего периода.";"";"";"";"";"";"";"";"10.0";"-11.8";"";"";"";"";"";
"31.01.2011 10:00";"-6.0";"745.0";"760.0";"76";"С";"3";"";"";"20–30%.";"Слабый или умеренный поземок в целом низкий (ниже уровня глаз наблюдателя).";"Снег и/или другие виды твердых осадков";"Метель";"-6.0";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"20–30%.";"600-1000";"";"";"10.0";"-9.5";"1.0";"12";"";"Ровный слой сухого рассыпчатого снега покрывает поверхность почвы полностью.";"41.0";
"31.01.2011 07:00";"-4.6";"741.7";"756.5";"83";"С";"3";"";"";"100%.";"Снег неливневый.";"Снег и/или другие виды твердых осадков";"Метель";"";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-7.0";"1.0";"12";"";"";"";
"31.01.2011 04:00";"-2.8";"738.4";"753.0";"84";"С";"3";"";"";"100%.";"Снег непрерывный слабый в срок наблюдения.";"Снег и/или другие виды твердых осадков";"Метель";"";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-5.1";"";"";"";"";"";
"31.01.2011 01:00";"-2.2";"734.6";"749.2";"91";"СЗ";"2";"";"";"100%.";"Снег непрерывный слабый в срок наблюдения.";"Снег и/или другие виды твердых осадков";"Облака покрывали более половины неба в течение всего соответствующего периода.";"";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-3.4";"";"";"";"";"";
"30.01.2011 22:00";"-1.6";"732.5";"747.0";"86";"З";"2";"";"";"100%.";"Дымка.";"Снег и/или другие виды твердых осадков";"Метель";"";"-1.6";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-3.6";"1.0";"12";"";"";"";
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754583
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой выход из итерации не помог
if (substr($data[0], 0, 1)=="#") {continue;}
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754595
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решетка вовсе не обязана быть в начале строки. Перед ней могут быть пробелы. Так же в строке конец строки может быть двухбайтовым, а php может считает однобайтовым - второй байт окажется началом следующей строки как мусор.

В общем, после чтения желательно делать строке trim(). Так же, никто тебе не мешает вывести на экран код первого символа, чтобы узнать, что там вместо решетки.

P.S.:
- параметр длины при чтении строки давно не обязателен, поэтому на всякий случай убери 4096;
- к символам строки можно обращаться как к массиву, т.е. $data[0] - это и так первый символ строки! Зачем ты его еще пихал в substr()? =)))

В общем, твоя задача - вывести на экран $data[0] (заодно и в числовом виде, а то вдруг там что непечатаемое).
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754597
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, сорри, я понял.
Ты сначала строку разбил на запчасти, а потом уже проверял на решетку? Логично же на решетку проверять сразу после чтения, т.е. до explode(). Зачем выполнять дурную работу?
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754613
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так:
автор$f = fopen("2011-December.csv", "rt") or die("Ошибка!");
while (!feof ($f)) {
$buffer = fgets($f, 4096);
if (substr($data[0], 0, 1)=="#") {continue;}
$data = explode(";", $buffer);

if ($data[5]=="ШТЛ"){$shtl=$shtl+1;}
if ($data[5]=="В"){$v=$v+$data[6];}
if ($data[5]=="ВСВ"){$vsv=$vsv+$data[6];}
if ($data[5]=="ВЮВ"){$vuv=$vuv+$data[6];}
if ($data[5]=="З"){$z=$z+$data[6];}
if ($data[5]=="ЗСЗ"){$zsz=$zsz+$data[6];}
if ($data[5]=="ЗЮЗ"){$zuz=$zuz+$data[6];}
if ($data[5]=="С"){$s=$s+$data[6];}
if ($data[5]=="СВ"){$sv=$sv+$data[6];}
if ($data[5]=="СЗ"){$sz=$sz+$data[6];}
if ($data[5]=="ССВ"){$ssv=$ssv+$data[6];}
if ($data[5]=="ССЗ"){$ssz=$ssz+$data[6];}
if ($data[5]=="Ю"){$u=$u+$data[6];}
if ($data[5]=="ЮВ"){$uv=$uv+$data[6];}
if ($data[5]=="ЮЗ"){$uz=$uz+$data[6];}
if ($data[5]=="ЮЮВ"){$uuv=$uuv+$data[6];}
if ($data[5]=="ЮЮЗ"){$uuz=$uuz+$data[6];}
}


Не сработало.

Должно работать вот так: http://stretchfilm.byethost13.com/2012-January.php
.csv с удаленной вручную шапкой: http://stretchfilm.byethost13.com/2012-January.csv


А получается так: http://stretchfilm.byethost13.com/2011-December.php
.csv с шапкой: http://stretchfilm.byethost13.com/2011-December.csv
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754614
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты хоть немного вдумываешься в то, что кодишь?!

Код: php
1.
2.
$buffer = fgets($f, 4096);
 if (substr($data[0], 0, 1)=="#") {continue;}



1. Что такое $data? При чем тут $data, если ты читаешь строку в $buffer?
2. Еще раз, substr() зачем?
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754690
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправил на if (substr($buffer[0], 0, 1)=="#") {continue;}
Не работает.
Как правильно?
С помощью substr получаю первый символ, если строка начинается с "#", то continue.
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754715
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?php

header('Content-type: text/html; charset=utf-8');

$s = '# Это коментарий';

echo '<pre>Первый символ строки s: '.$s[0].'</pre>';

echo '<pre>Первый символ - решетка? '.($s[0] == '#' ? 'ДА' : 'НЕТ').'!</pre>';

?>
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754716
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему оно должно работать?
Если хотите просто удалить строки начинающиеся с решетки, то можно сделать так:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?php
header('Content-type: text/plain; charset=urf-8');

$text = <<<TXT
# Метеостанция Москва (ВВЦ), Россия, WMO_ID=27612, выборка с 01.01.2011 по 31.01.2011, все дни
# Кодировка: ANSI
# Данные предоставлены WEB-сайтом "Расписание Погоды", rp5.ru
# Пожалуйста, при использовании данных, любезно указывайте названный сайт.
# Обозначения метеопараметров см. по адресу http://rp5.ru/archive.php?wmo_id=27612&lang=ru
#
"Местное время в Москве (ВВЦ)";"T";"Po";"P";"U";"DD";"Ff";"ff10";"ff3";"N";"WW";"W1";"W2";"Tn";"Tx";"Cl";"Nh";"H";"Cm";"Ch";"VV";"Td";"RRR";"tR";"E";"E'";"sss"
"31.01.2011 22:00";"-10.6";"749.0";"764.4";"90";"ШТЛ";"0";"";"";"100%.";"Дымка.";"Облака покрывали более половины неба в течение одной части соответствующего периода и половину или менее в течение другой части периода.";"Облака покрывали более половины неба в течение одной части соответствующего периода и половину или менее в течение другой части периода.";"";"-6.0";"";"Облаков нет.";"2000-2500";"";"Перистые (часто в виде полос) и перисто-слоистые, распространяющиеся по небу и в целом обычно уплотняющиеся; сплошная пелена, поднимающаяся над горизонтом выше 45°, не покрывает всего неба.";"";"-11.9";"";"";"";"";"";
"31.01.2011 19:00";"-9.9";"749.1";"764.4";"81";"ШТЛ";"0";"";"";"10% или менее, но не 0";"";"";"";"";"";"";"Облаков нет.";"2000-2500";"";"Перистые нитевидные, иногда когтевидные, не распространяющиеся по небу.";"";"-12.5";"";"";"";"";"";
"31.01.2011 16:00";"-6.8";"748.5";"763.6";"66";"С";"2";"";"";"Облаков нет.";"Состояние неба в общем не изменилось.";"Метель";"Облака покрывали половину неба или менее в течение всего соответствующего периода.";"";"";"";"";"";"";"";"10.0";"-12.0";"";"";"";"";"";
"31.01.2011 13:00";"-7.8";"747.7";"762.8";"73";"С";"2";"";"";"Облаков нет.";"Состояние неба в общем не изменилось.";"Метель";"Облака покрывали половину неба или менее в течение всего соответствующего периода.";"";"";"";"";"";"";"";"10.0";"-11.8";"";"";"";"";"";
"31.01.2011 10:00";"-6.0";"745.0";"760.0";"76";"С";"3";"";"";"20–30%.";"Слабый или умеренный поземок в целом низкий (ниже уровня глаз наблюдателя).";"Снег и/или другие виды твердых осадков";"Метель";"-6.0";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"20–30%.";"600-1000";"";"";"10.0";"-9.5";"1.0";"12";"";"Ровный слой сухого рассыпчатого снега покрывает поверхность почвы полностью.";"41.0";
"31.01.2011 07:00";"-4.6";"741.7";"756.5";"83";"С";"3";"";"";"100%.";"Снег неливневый.";"Снег и/или другие виды твердых осадков";"Метель";"";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-7.0";"1.0";"12";"";"";"";
"31.01.2011 04:00";"-2.8";"738.4";"753.0";"84";"С";"3";"";"";"100%.";"Снег непрерывный слабый в срок наблюдения.";"Снег и/или другие виды твердых осадков";"Метель";"";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-5.1";"";"";"";"";"";
"31.01.2011 01:00";"-2.2";"734.6";"749.2";"91";"СЗ";"2";"";"";"100%.";"Снег непрерывный слабый в срок наблюдения.";"Снег и/или другие виды твердых осадков";"Облака покрывали более половины неба в течение всего соответствующего периода.";"";"";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-3.4";"";"";"";"";"";
"30.01.2011 22:00";"-1.6";"732.5";"747.0";"86";"З";"2";"";"";"100%.";"Дымка.";"Снег и/или другие виды твердых осадков";"Метель";"";"-1.6";"Слоисто-кучевые, образовавшиеся не из кучевых.";"70 – 80%.";"600-1000";"Высокослоистые просвечивающие.";"Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.";"";"-3.6";"1.0";"12";"";"";"";
TXT;

var_dump(preg_replace("/^#.*$\n??/imU", '', $text));
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754731
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я разбираю файл .csv, а вы мне даете пример со строковыми переменными
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754733
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
var_dump(preg_replace("/^#.*$\n??/imU", '', file_get_contents('C:\file.csv')); 
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754734
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754743
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Admin_VladЯ разбираю файл .csv, а вы мне даете пример со строковыми переменными
И что? Это мешает пониманию того КАК получить первый символ и того факта, что если он решетка, то таки решетка?
Или работая с файлом нельзя пользоваться оператором echo как в примере, чтобы разобраться в своей уборной самостоятельно и обнаружить наконец-то, что же там за символ в начале вместо решетки?

Если даже с такими вещами сложности, то остается гадать на кофейной гуще.

А пример со строками к тому, что при работе с файлами все точно так же и ни на йоту не сложнее. В чем может быть проблема, я описывал ранее, еще задолго до примера. Вы проигнорировали, не произвели у себя никаких проверок. Так о чем дальше то говорить?

Давайте я их за вас сделаю. Давайте доступ к сайту и кидайте денег на вебмани - разберемся, что у вас там за мусор попадает в строки. Но право же - элементарные вещи, которым стоит научиться - выводить интересующие данные командой echo...
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754747
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, зачем нужно делать дамп информации о переменной?
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37754758
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы посмотреть что в ней находится наверно)
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37772943
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, почему не читается строка "ЮВ" в одном поле:
[5]=> string(0) ""
а в другом читается:
[15]=> string(39) "-кучевые, образовавшиеся не из кучевых."

http://stretchfilm.byethost13.com/2006-2011.php
...
Рейтинг: 0 / 0
Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
    #37772946
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строка: автор01.01.2006 1:00;-5.3;755.4;770.6;93;ЮВ;2;;;100%.;Дымка.;Облака покрывали более половины неба в течение всего соответствующего периода.;Облака покрывали более половины неба в течение всего соответствующего периода.;;;Слоисто-кучевые, образовавшиеся не из кучевых.;100%.;200-300;Высококучевые башенкообразные или хлопьевидные.;Перисто-кучевые одни или перисто-кучевые, сопровождаемые перистыми или перисто-слоистыми, либо те и другие, но перисто-кучевые преобладают среди них.;;-6.3;;;;;

Код:
Код: php
1.
2.
3.
	if (($handle = fopen("2006-2011.csv", "r")) !== FALSE) {
		while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
		echo var_dump($data);
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как скипнуть первые 7 строк из .csv? В них не данные, а шапка с описанием.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]