Как в файле пропустить строку в
Итак, представьте, что каждая строка равномерно распределена, но есть 2 пустые строки (или вкладки) между 8 и ROD. Как бы я пропустил это и продолжил программу? Я пытаюсь поместить каждую строку в 3 вектора (так что ключи, lamp и стержень в один вектор и т. д.). Вот мой код (но он не пропускает пустую строку).:
2 ответа
Я хочу прочитать текстовый файл строка за строкой, но меня не интересуют белые строки. Какой хороший способ пропустить пустые строки? Я знаю, что могу прочитать строку, проверить, пустая ли она, и освободить ее, если она есть, и так далее, пока не дойду до хорошей строки, но мне интересно, есть ли.
Здравствуйте, я прогремел в c с linux окружающей средой и столкнулся с трудностями с пустыми строками при чтении из файла. я использую функцию strtok для разделения строки разделителем , и получаю ошибку сегментации всякий раз, когда файл, из которого я читаю, содержит пустые строки заранее.
Вместо этого вы можете использовать std::getline() (как указывали многие люди). что приведет к каждой строке one-by-one :
И да, пример :
Я думаю, вы можете проверить, пуста ли строка через std::getline . Если это так, то вы можете игнорировать его или что-то в этом роде.
Если я прав, то строка не будет иметь длины, если она пуста, и если это так, мы снова проверяем, поэтому игнорируем ее.
Похожие вопросы:
Как я могу игнорировать или удалять пустые строки при чтении из текстового файла с помощью Scala? Пример приведен ниже: как вы можете видеть, вторая строка-это дополнительная строка. I. Период Это.
У меня есть код ,в котором загружается файл csv, данные извлекаются из него и загружаются в базу данных. Все работает нормально, но как я могу пропустить пустые строки и продолжить чтение строк с.
Я хочу прочитать текстовый файл строка за строкой, но меня не интересуют белые строки. Какой хороший способ пропустить пустые строки? Я знаю, что могу прочитать строку, проверить, пустая ли она, и.
Здравствуйте, я прогремел в c с linux окружающей средой и столкнулся с трудностями с пустыми строками при чтении из файла. я использую функцию strtok для разделения строки разделителем , и получаю.
Мне удалось пропустить раздел имени при чтении значений из файла с парами имени и значения. Но есть ли другой способ пропустить раздел имени без объявления фиктивной строки для хранения пропущенных.
Как лучше всего игнорировать некоторые строки при чтении / разборе файла (используя Ruby)? Я пытаюсь разобрать только сценарии из файла Cucumber .feature и хотел бы пропустить строки, которые не.
Я пытался удалить пустые строки из моего файла cvs, однако это не работает, он записывает только первую строку пожалуйста, посмотрите и скажите мне, как я могу получить все строки с текстом и.
Как пропустить строку при считывании из файла?
Подскажите, плз, как пропустить строку при считывании данных из текстового файла. Имеется файл.
Текстовые файлы: в первую строку вставить первую гласную из второй строки, после каждой согласной в первой
1-в первую строку вставить первую гласную из второй строки, после каждой согласной в первой (строки.
Как начать чтения файла со второй строки ?
Всем привет ! Может кто подсказать как начать чтения из файла в консоль со второй строки , дело в.
disker, например, так:
Fixer_84, спасибо. Идею понял, но почему-то не получается воплотить на бумаге Я пытаюсь с некоего файла скопировать строки (исключая первую строку), но открываю через всплывающее окно openFileDialog1 , а раньше никогда так не делал поэтому зашел в тупик. В будущем мне нужно будет с каждой строки забрать только 20 чисел , которые я выделил красным цветом (это все только одна строка):
5715 2016-12-02 Б 4 10 42 43 45 1 40 50 41 35 13 19 80 55 59 27 16 71 18 36 79 54 132 11 218 46 12 275 41 10 669 136 14 1 223 35 5 0 346 71 11 0 0 229 137 32 0 0 0 472 587 108 12 1 0 0А код у меня такой:
Добавлено через 24 минутыТак.. одну ошибку уже нашел : там где написано FileName в строках 14,24 нужно было писать sr я так понимаю.. Правда все равно не заработало..
как побороть эту ошибку ? Пробовал вставлять в начало программы и не помогло
Добавлено через 11 минутЗ.ы. Нашел ошибку по поводу getline , вопрос снимается.. приношу извинения думаю лучше будет просто один раз сделать getline, чтобы пропустить первую строку, и уже потом работать дальше
возможно Тему можно закрывать - пока что отказался от такого ввода, ввожу по старинке с ручным переименовыванием файла под необходимый и ввода через кнопку "Пуск" Всем спасибо
Добавлено через 2 минуты
Как мне начать вводить информацию в файл со второй строки, 1ую строку трогать нельзя, она занята информацией.
У меня сейчас работа с файлами. Как мне начать вводить информацию в файл со второй строки, 1ую.
Вставить первую строку в заданную позицию второй строки
Нужно написать программу которая вставляет первую строку в заданную позицию второй строки.
Второе слово второй строки нужно скопировать в первую строку
дано 2 строки, каждые имеют 5 слов с пробелами, нужно обычным способом составить код чтобы 2-ое.
Привет, ребята, у меня возникли проблемы с пропуском ненужных строк из текстового файла, который я читаю в своей программе. Данные имеют следующий формат:
Я хочу прочитать строку 1, линии обрезки 3, 4 и пробел, а затем прочитать строку 5, строки обрезки 7 и 8. Я читал нечто подобное здесь, на этом веб-сайте, однако в этом конкретном случае первые 5 пропущены. строки текстового файла. Это то, что я пробовал до сих пор:
Как вы, ребята, видите, для диапазона я указал начало как строку 2, а затем пропустил 3 строки, которые включают пробел. Однако этот первый параметр Enumerable.Range, похоже, не имеет значения. Я могу поставить 0, и результат будет тот же. Как у меня сейчас, программа обрезает от первой строки до числа, указанного во втором параметре функции .Range. Кто-нибудь знает способ обойти эту проблему? Спасибо
Вот расширенная версия решения, предоставленная здесь по запросу OP.
Вот еще одна версия, которая будет немного менее хрупкой, если входной файл закончится внезапно.
Вы пробовали что-то подобное?
Хотя, если это не входной файл с чрезвычайно фиксированным форматом, я бы нашел другой способ выяснить, что делать с каждой строкой, а не с фиксированным номером строки.
В документации для Enumerable.Range говорится:
Таким образом, изменение первого параметра не изменит логику вашей программы.
Однако это странный способ сделать это. Цикл for был бы намного проще, легче для понимания и намного эффективнее.
Кроме того, ваш код в настоящее время читает первую строку, пропускает три строки, затем выводит первую строку, а затем повторяется.
Я не думаю, что вы хотите читать строку в двух местах (одно в цикле, а затем снова внутри цикла). Я бы выбрал такой подход:
Конечно, диапазон не имеет значения . то, что вы делаете, пропускает 2 строки за раз внутри каждой итерации цикла while - 2-3 не влияют на указатель чтения файлов. Я бы посоветовал вам просто иметь счетчик, сообщающий вам, на какой строке вы находитесь, и пропустить, если номер строки является одним из тех, которые вы хотите пропустить, например
Почему бы не прочитать все строки в массиве, а затем просто проиндексировать те, которые вам нужны
Если это действительно большой файл с последовательно повторяющимися разделами, вы можете создать метод чтения и сделать:
Обратите внимание, что в конце файла есть лишние пустые строки.
Я хочу заменить значение столбца 5 значением столбца 4 во всех строках, кроме первой и последней непустых строк.
Я не могу полагаться на количество полей, поскольку последняя строка может иметь столько же полей, что и другие, или на строки, которые нужно изменять, всегда начиная с числа.
Я пробовал код ниже:
Как я могу пропустить первую и последнюю непустые строки при изменении? Я также хочу пропустить пустые строки.
- Как мы можем узнать последнюю строчку? Всегда ли будет одинаковое количество строк? Ваш вывод предполагает, что ваш входной файл имеет несколько пустых строк в конце.
- @terdon: Макс будет 3 пустых строки в последней, это основная проблема. Под вопросом из последней строки я подразумеваю ту строку, которая не пуста в последней.
- хорошо . из вашего образца нужно изменить только строки, начинающиеся с номера . можно ли это использовать в решении? потому что ограничение последней непустой строки нетривиально
- @Sundeep: Нет, это нельзя использовать. Первая и последняя непустые строки также могут начинаться с номера.
- @don_crissti ага, это упростило бы логику :)
Вот вы идете с awk и обрабатываем файл только один раз.
Пояснение:
Здесь мы подключаемся к первой строке на замену 5 th значение поля с 4 th значение поля, просто распечатайте его и выполните next .
. если она (текущая следующая строка) не была пустой строкой (хотя бы содержит одно поле NF ), затем сделайте резервную копию всей строки с \n ewline добавлен l='\n'$0 первый следующий сет 5 th значение поля с 4 th значение поля $5=$4 и последний раз установите его в переменную m с \n ewline добавлен m='\n'$0; ; Существует c переменная как счетчик флаг и используется для определения количества пустых строк !NF
Теперь мы изменили строку в m переменная и m && NF напечатает его, где на следующем шаге awk бежит и m установлен, и это не на пустых строках & NF (это используется для предотвращения дублирования при печати при пустой строке).
В конце мы печатаем нетронутую последнюю строку, которую мы делаем резервную копию каждый раз перед выполнением замены. END< print l; . а затем количество пустых строк, в которых никогда не встречалась строка с полем с зацикливанием for (; i++ .
Это намного короче, если вам не нужны лишние пустые строки.
- Первый код не меняет значение.
- Привет @serenesat Это меняется! Оба кода вносят изменения.
- Нет. второй меняется, а первый нет. Первый не вносит никаких изменений и также не показывает никаких ошибок.
С участием sed , полагаясь на то, что вторая строка пуста:
Если ваш sed не понимает \n в замене используйте вместо этого буквальный перевод строки (или используйте символ, который, как известно, не является частью файла).
Строки (за исключением первой) собираются в удерживаемом пространстве, когда достигается конец файла, удерживаемое пространство печатается как есть, в противном случае с желаемой заменой.
- 1 : Для 1-й строки n печатает его без изменений, читая следующую строку, просто чтобы d выберите это. Почему? Поскольку удерживаемое пространство должно содержать что-то для печати, в любом случае оно содержит пустую строку.
- /./! выполняется только для пустых строк, добавляя себя к H старое пространство. Только для последней строчки $ переместите удерживаемое пространство назад и распечатайте его. В любом случае d elete, чтобы остановить дальнейшее выполнение для этой строки.
x обменивает непустую строку с буфером удержания, поэтому она остается там, в то время как теперь мы можем обрабатывать сохраненные строки, потому что мы знаем, что это была не последняя непустая строка.
s/|/\n/4;s/\([^|]*\)\n[^|]*/\1|\1/ выполняет копирование из столбца 4 в 5, заменяя четвертый | с новой строкой, чтобы пометить его, а затем заменить поля до и после совпадения двумя полями до.
Как я уже сказал, самый простой способ - обработать файл дважды.
1-й проход - получить номер строки. для последней непустой строки.
2-й проход - обработать все строки (кроме заголовка) перед последней непустой строкой, которая имеет как минимум пять полей:
Я сделал предположение, что если в строке всего четыре столбца - нужно добавить пятый столбец со значением четвертого столбца. Правильно?
Читайте также: