По заданному текстовому файлу выведите количество символов и строк, которые он содержит
Обновлено: 21.11.2024
Возможность открывать и читать файлы позволяет нам работать с большими наборами данных, где невозможно ввести каждое значение и сохранить их по одному как переменные. Запись файлов позволяет нам обрабатывать наши данные, а затем сохранять результат в файл, чтобы мы могли просмотреть его позже.
Сейчас мы будем практиковаться в работе с текстовым файлом с разделителями-запятыми (.csv), который содержит несколько столбцов данных. Однако то, что вы узнаете на этом уроке, можно применить к любому обычному текстовому файлу. На следующем уроке вы узнаете о другом способе чтения и обработки данных в формате .csv.
Пути к файлам
Чтобы открыть файл, нам нужно указать Python, где именно находится файл относительно того, где Python работает в данный момент (рабочий каталог). В Spyder мы можем сделать это, установив наш текущий рабочий каталог в папку, в которой находится файл. Или, когда мы указываем имя файла, мы можем указать полный путь к файлу.
Настройка урока
- Найдите файл Plates_output_simple.csv в папке home/Desktop/workshops/bash-git-python.
- Скопируйте файл в свой рабочий каталог, home/Desktop/workshops/YourName.
- Убедитесь, что в качестве рабочего каталога также указана папка home/Desktop/workshops/YourName.
- Во время работы обязательно сохраняйте сценарии открытия файлов в этом каталоге.
Настройка файла
Давайте откроем и изучим структуру файла Plates_output_simple.csv. Если вы откроете файл в текстовом редакторе, вы увидите, что файл содержит несколько строк текста.
Однако это довольно сложно читать. Если вы откроете файл в программе для работы с электронными таблицами, такой как LibreOfficeCalc или Excel, вы увидите, что файл организован в столбцы, где каждый столбец разделен запятыми на изображении выше (отсюда и расширение файла .csv, которое означает запятую). разделенные значения).
Файл содержит одну строку заголовка, за которой следуют восемь строк данных. Каждая строка представляет одно изображение пластины. Если мы посмотрим на заголовки столбцов, то увидим, что мы собрали данные по каждой тарелке:
- Название изображения, из которого были собраны данные
- Номер пластины (было 4 пластины, каждая из которых была снята в два разных момента времени)
- Условия выращивания (контрольные или экспериментальные).
- Время наблюдения (24 или 48 часов)
- Подсчет колоний на чашке
- Средний размер колонии на чашке.
- Процент площади чашки, покрытой бактериальными колониями.
Мы прочитаем этот файл данных, а затем проанализируем данные.
Открытие и чтение файлов – это трехэтапный процесс
.Мы откроем и прочитаем файл в три этапа.
- Мы создадим переменную для хранения имени файла, который мы хотим открыть.
- Мы вызовем open, чтобы открыть файл.
- Мы вызовем функцию, которая фактически прочитает данные из файла и сохранит их в переменной, чтобы мы могли их обработать.
А потом осталось сделать еще один шаг!
- Когда мы закончим, мы должны не забыть закрыть файл!
Эти три шага можно сравнить с получением книги в библиотеке. Во-первых, вы должны зайти в каталог или базу данных, чтобы узнать, какая книга вам нужна (имя файла). Затем вам нужно взять ее с полки и открыть книгу (функция открыть). Наконец, чтобы получить какую-либо информацию из книги, вы должны прочитать слова (функция read)!
Вот пример открытия, чтения и закрытия файла.
После того как мы прочитали данные из файла в нашу переменную data, мы можем обращаться с ней как с любой другой переменной в нашем коде.
Используйте согласованные имена, чтобы сделать ваш код более понятным
Полезно выработать определенные привычки в отношении того, как вы открываете и читаете файлы. Использование одних и тех же (или похожих!) имен переменных каждый раз облегчит вам отслеживание того, какая переменная является именем файла, какая переменная является объектом открытого файла, а какая переменная содержит считываемые данные.< /p>
В этих примерах мы будем использовать filename для текстовой строки, содержащей имя файла, infile для открытого файлового объекта, из которого мы можем считывать данные, и data для переменной, содержащей содержимое файла.< /p>
Команды для чтения в файлах
Существует множество команд, которые позволяют нам считывать данные из файлов.
infile.read() будет считывать весь файл как одну строку текста.
файл.readline() будет читать по одной строке за раз (каждый раз, когда вы вызываете эту команду, она читает со следующей строки).
infile.readlines() прочитает все строки в список, где каждая строка файла является элементом списка.
Смешивание этих команд может привести к неожиданным результатам.
Обратите внимание, что команда infile.read() начинается с третьей строки файла, где заканчиваются первые две команды infile.readline().
Подумайте об этом так: когда файл открывается, указатель помещается в верхний левый угол файла в начале первой строки. Каждый раз, когда вызывается функция read, курсор или указатель перемещаются с того места, где они уже находятся. Первый infile.readline() начинался с начала файла и продвигался до конца первой строки. Теперь указатель находится в начале второй строки. Второй infile.readline() продвинулся до конца второй строки файла и оставил указатель в начале третьей строки. infile.read() начинается с этой позиции и продолжается до конца файла.
Вообще, если вы хотите переключаться между различными типами команд read, вам следует закрыть файл, а затем снова открыть его, чтобы начать заново.
Чтение всех строк файла в список
infile.readlines() прочитает все строки в список, где каждая строка файла является элементом списка. Это чрезвычайно полезно, потому что, как только мы прочитали файл таким образом, мы можем просмотреть каждую строку файла и обработать его. Этот подход хорошо работает с файлами данных, где данные организованы в столбцы, как в электронной таблице, потому что, вероятно, мы захотим обрабатывать каждую строку одинаково.
Пример ниже демонстрирует этот подход:
Использование .split() для разделения «столбцов»
Поскольку наши данные находятся в файле .csv, мы можем использовать команду split, чтобы разделить каждую строку файла на список. Это может быть полезно, если мы хотим получить доступ к определенным столбцам файла.
Снова согласованные имена
На первый взгляд, имя переменной sline в приведенном выше примере может не иметь особого смысла. На самом деле, мы выбрали его как сокращение от «split line», которое точно описывает содержимое переменной.
Вам не нужно использовать это соглашение об именах, если вы этого не хотите, но вы должны работать над тем, чтобы использовать согласованные имена переменных в вашем коде для таких общих операций, как эта. Это значительно упростит открытие старого скрипта и позволит быстро понять, что именно он делает.
Преобразование текста в числа
Когда мы вызвали команду readlines() в предыдущем коде, Python считывает содержимое файла в виде строки. Если мы хотим, чтобы наш код распознавал что-то в файле как число, мы должны сообщить ему это!
Например, float('5.0') сообщит Python обработать текстовую строку '5.0' как номер 5.0. int(sline[4]) сообщит нашему коду, что текстовую строку, хранящуюся в 5-й позиции списка sline, следует рассматривать как целое (недесятичное) число.
Для каждой строке в файле ColonyCount хранится в 5-м столбце (индекс 4 с нашим подсчетом на основе 0).
Измените приведенный выше код, чтобы он печатал строку только в том случае, если ColonyCount больше 30.
Решение
Запись данных в файл
Часто нам нужно записать данные в новый файл. Это особенно полезно, если мы выполнили много вычислений или обработали данные и хотим иметь возможность сохранить их и вернуться к ним позже.
Запись файла — это тот же многоэтапный процесс
Как и при чтении файла, мы будем открывать и записывать файл в несколько этапов.
- Создайте переменную для хранения имени файла, который мы хотим открыть. Часто это будет новый файл, которого еще не существует.
- Вызовите функцию, чтобы открыть файл. На этот раз мы укажем, что открываем файл для записи в него!
- Запишите данные в файл. Это требует особого внимания к форматированию.
- Когда мы закончим, мы должны не забыть закрыть файл!
В приведенном ниже коде показан пример записи в файл:
Где оказался мой файл?
Каждый раз, когда вы открываете новый файл и записываете в него данные, этот файл будет сохранен в вашем текущем рабочем каталоге, если только вы не указали другой путь в переменной имя_файла.
цитата>Символы новой строки
Когда вы просмотрите только что написанный файл, вы увидите, что весь текст находится на одной строке! Это потому, что мы должны сообщить Python, когда начинать с новой строки, используя специальный строковый символ '\n'. Этот символ новой строки сообщит Python, где именно начинать каждую новую строку.
В приведенном ниже примере показано, как использовать символы новой строки:
Откройте файл, который вы только что написали, и проверьте правильность интервалов между строками.:
Работа с символами новой строки при чтении файла
Возможно, вы заметили в последнем примере чтения файла, что напечатанный вывод включал символы новой строки в конце каждой строки файла:
['colonies02.tif', '2', 'exp ', '24', '84', '3.2', '22\n']
['colonies03.tif', '3', 'exp', '24', '792', '3' , '78\n']
['colonies06.tif', '2', 'exp', '48', '85', '5.2', '46\n']
Мы можем избавиться от этих новых строк с помощью функции .strip(), которая избавится от символов новой строки:
Запись чисел в файлы
Точно так же, как Python автоматически считывает файлы в виде строк, функция write() ожидает только записи строк. Если мы хотим записать числа в файл, нам нужно будет преобразовать их в строки с помощью функции str() .
В приведенном ниже коде показан пример этого:
Написание новых строк и чисел
Откройте и проверьте файл, который вы только что написали. Вы увидите, что все числа записаны в одной строке.
Измените код, чтобы каждое число записывалось в отдельной строке.
Решение
Файл, который вы только что написали, должен быть сохранен в вашем рабочем каталоге. Откройте файл и убедитесь, что выходные данные правильно отформатированы с одним числом в каждой строке.
Открытие файлов в разных «режимах»
Когда мы открывали файлы для чтения или записи данных, мы использовали параметр функции «r» или «w», чтобы указать, каким «способом» открыть файл.
'r' указывает, что мы открываем файл для чтения данных из него.
'w' означает, что мы открываем файл для записи в него данных.
Будьте очень-очень осторожны при открытии существующего файла в режиме 'w'.
'w' перезапишет любые данные, которые уже есть в файле! Перезаписанные данные будут потеряны!
Если вы хотите добавить то, что уже есть в файле (вместо того, чтобы стирать и перезаписывать его), вы можете открыть файл в режиме добавления< /em>, используя вместо этого параметр 'a'.
Собираем все вместе
- Откройте файл.
- Используйте .readlines() для создания списка строк в файле. Затем закройте файл!
- Откройте файл, в который нужно записать результат.
- Напишите строку заголовка выходного файла.
- Используйте цикл for, чтобы перебрать каждую строку в списке строк из входного файла.
- Для каждой строки проверьте, были ли условия роста экспериментальными или контрольными.
- Для контрольных строк запишите строку данных в выходной файл.
- Закройте выходной файл, когда закончите!
Решение
Вот один из способов сделать это:
Проблема-вызов
Откройте и прочитайте данные из Plates_output_simple.csv. Напишите новый файл в формате csv, содержащий только строки для контрольного условия и только столбцы для времени, столбца колонии, avgColonySize и процентколониареа. Подсказка: вы можете использовать функцию .join() для объединения списка элементов в строку.
В этой статье мы обсудим, как искать одну или несколько строк в файле и получать все совпадающие строки вместе с их номерами строк.
Проверить, существует ли строка в файле
Чтобы проверить, существует ли данная строка в файле или нет, мы создали функцию,
Он принимает путь к файлу и строку в качестве аргументов. Затем перебирает каждую строку в файле одну за другой и для каждой строки проверяет, содержит ли она заданную строку или нет. Если строка содержит заданную строку, то вернуть True. В то время как если ни одна строка в файле не содержит заданную строку, возвращается False.
Содержимое файла «sample.txt»:
Проверим, содержит ли этот файл строку «is» или нет,
Поскольку файл содержит «есть», функция check_if_string_in_file() возвращает значение True.
Здесь мы узнаем, содержит файл заданную строку или нет. Но что, если мы хотим знать все точные вхождения строки в файл, такие как строки и номера строк. Давайте посмотрим, как это сделать,
Найти строку в файле и получить все строки, содержащие строку, вместе с номерами строк
мы создали функцию для получения всех строк и номеров строк, содержащих заданную строку,
Он принимает путь к файлу и строку в качестве аргументов. В конце он возвращает список кортежей, где каждый кортеж содержит номер строки и строку, в которую входит данная строка.
Как это сработало?
Алгоритм следующий:
- Принять аргументы — путь к файлу и строка для поиска.
- Создайте пустой список кортежей.
- Открыть файл по указанному пути в режиме только для чтения.
- Перебирает каждую строку в файле одну за другой.
- Для каждой строки проверьте, содержит ли она заданную строку или нет.
- Если строка содержит заданную строку,
- Создает кортеж из номера строки и строки и добавляет его в список кортежей.
Предположим, у нас есть файл «sample.txt» и его содержимое:
Давайте получим всю строку вместе с номерами строк, которые содержат слово «есть»,
Всего было две строки, содержащие строку «is», и эта функция вернула эти строки вместе с их номерами строк. Теперь предположим, что вместо поиска одной строки мы хотим искать несколько строк в файле. Давайте посмотрим, как это сделать,
Поиск нескольких строк в файле и получение строк, содержащих строку вместе с номерами строк
Для поиска нескольких строк в файле мы не можем использовать созданную выше функцию, поскольку она будет открывать и закрывать файл для каждой строки. Поэтому мы создали отдельную функцию, которая будет открывать файл один раз, а затем искать строки в файле, содержащие любую из заданных строк, т.е.
Давайте воспользуемся этой функцией,
Содержимое файла ‘sample.txt’:
Давайте получим все строки вместе с их номерами строк, которые либо содержат слово «есть» или «что»,
Полный пример выглядит следующим образом:
Вывод:
Учебники по Pandas – изучите анализ данных с помощью Python
Вы хотите сделать карьеру в области Data Science с помощью Python?
Наука о данных — это будущее, и оно уже наступило. На сегодняшний день специалисты по данным являются самыми востребованными профессионалами. Чтобы стать хорошим Data Scientist или сменить профессию в Data Science, нужно обладать нужным набором навыков. Мы составили список лучших профессиональных сертификатов в области науки о данных с помощью Python. Эти курсы научат вас инструментам программирования для науки о данных, таким как Pandas, NumPy, Matplotlib, Seaborn, и тому, как использовать эти библиотеки для реализации моделей машинного обучения.
Ознакомьтесь с подробным обзором лучшего профессионального сертификата по науке о данных с Python.
Помните, что наука о данных требует большого терпения, настойчивости и практики. Итак, начните учиться сегодня.
Присоединяйтесь к сообществу разработчиков Python в LinkedIn
Похожие записи
Вставить элемент в начало массива NumPy
Как добавить столбцы в массив NumPy в Python
Как объединить массивы NumPy в Python?
Добавить строку в массив NumPy в Python
Добавить элементы в конец массива в Python
Как удалить столбцы из массива NumPy
Как удалить строки из массива NumPy
Удалить последний элемент из массива NumPy в Python
Удалить первый элемент из массива NumPy в Python
Проверьте, является ли двумерный массив NumPy или матрица симметричным
Редактировать значения ячеек в CSV-файлах с помощью Pandas в Python
Сортировка массива NumPy в порядке убывания в Python
Преобразование списка в набор в Python
Добавление двух элементов списка в Python
Добавление одного списка к другому списку в Python
Удалить дубликаты из массива NumPy в Python
Проверить, существует ли столбец в Pandas DataFrame
Проверить, равны ли два массива NumPy в Python
Pandas: проверьте, все ли значения в столбце равны нулю
Проверить, все ли значения в столбце являются NaN в Pandas
1 мысль о «Python: поиск строк в файле и получение номеров строк, содержащих строку»
А если нужно напечатать только строки справа от строки поиска?
Оставить комментарий Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Реклама
Реклама
Последние публикации
Учебники по Python
Что-то ищу
Учебники по C++/C++11
Условия использования
Условия и политика
Учебники по Python
Избранные сайты
Отказ от ответственности
Условия и политика
Авторское право © 2022 thisPointer
Техническое хранение или доступ строго необходимы для законной цели предоставления возможности использования конкретной услуги, явно запрошенной подписчиком или пользователем, или с единственной целью осуществления передачи сообщения по сети электронной связи.
Техническое хранение или доступ необходимы для законных целей хранения настроек, которые не запрашиваются подписчиком или пользователем.
Техническое хранилище или доступ, которые используются исключительно в статистических целях. Техническое хранилище или доступ, который используется исключительно для анонимных статистических целей. Без повестки в суд, добровольного согласия со стороны вашего интернет-провайдера или дополнительных записей от третьей стороны информация, хранящаяся или извлекаемая только для этой цели, обычно не может быть использована для вашей идентификации.
Техническое хранилище или доступ необходимы для создания профилей пользователей для отправки рекламы или отслеживания пользователя на веб-сайте или на нескольких веб-сайтах в аналогичных маркетинговых целях.
Техническое хранение или доступ строго необходимы для законной цели предоставления возможности использования конкретной услуги, явно запрошенной подписчиком или пользователем, или с единственной целью осуществления передачи сообщения по сети электронной связи.
Техническое хранение или доступ необходимы для законных целей хранения настроек, которые не запрашиваются подписчиком или пользователем.
Техническое хранилище или доступ, которые используются исключительно в статистических целях. Техническое хранилище или доступ, который используется исключительно для анонимных статистических целей. Без повестки в суд, добровольного согласия со стороны вашего интернет-провайдера или дополнительных записей от третьей стороны информация, хранящаяся или извлекаемая только для этой цели, обычно не может быть использована для вашей идентификации.
Техническое хранилище или доступ необходимы для создания профилей пользователей для отправки рекламы или отслеживания пользователя на веб-сайте или на нескольких веб-сайтах в аналогичных маркетинговых целях.
Получите полный доступ к Python Cookbook и более чем 60 тысячам других игр, воспользовавшись бесплатной 10-дневной пробной версией O'Reilly.
Есть также прямые онлайн-мероприятия, интерактивный контент, материалы для подготовки к сертификации и многое другое.
Источник: Лютер Блиссет
Проблема
Вам нужно вычислить количество строк в файле.
Решение
Самый простой подход для файлов разумного размера – прочитать файл как список строк, чтобы количество строк равнялось длине списка. Если путь к файлу находится в строке, привязанной к переменной thefilepath, это просто:
Для действительно огромного файла это может быть очень медленным или даже не работать. Если вам нужно беспокоиться об огромных файлах, всегда работает цикл с использованием метода xreadlines:
Вот несколько хитрый вариант, если разделителем строки является '\n' (или содержит '\n' в качестве подстроки, как это происходит в Windows):
Без аргумента 'rb' для открытия это будет работать где угодно, но производительность может сильно снизиться на платформах Windows или Macintosh.
Обсуждение
Если у вас есть внешняя программа, которая считает строки в файле, например, wc -l на Unix-подобных платформах, вы, конечно, можете использовать ее (например, через os.popen()). Однако, как правило, проще, быстрее и удобнее выполнять подсчет строк в вашей программе. Вы можете положиться на то, что почти все текстовые файлы имеют разумный размер, так что чтение всего файла в память возможно сразу. Для всех таких обычных файлов длина результата readlines дает вам количество строк самым простым способом.
Если файл больше доступной памяти (скажем, несколько сотен мегабайт на обычном ПК сегодня), самое простое решение может работать медленно, поскольку операционная система изо всех сил пытается разместить содержимое файла в виртуальной памяти. Это может даже дать сбой, когда пространство подкачки исчерпано и виртуальная память уже не может помочь. На обычном ПК с 256 МБ ОЗУ и практически неограниченным дисковым пространством следует ожидать серьезных проблем при попытке чтения в память файлов размером, скажем, 1 или 2 ГБ, в зависимости от вашей операционной системы (некоторые операционные системы гораздо более уязвимы, чем другие, в решении проблем с виртуальной памятью в таких условиях чрезмерной нагрузки). В этом случае метод файловых объектов xreadlines, представленный в Python 2.1, в целом является хорошим способом обработки текстовых файлов построчно. В Python 2.2 вы можете сделать еще лучше с точки зрения ясности и скорости, зациклив непосредственно на файловом объекте:
Однако xreadlines не возвращает ни последовательность, ни цикл непосредственно на файловом объекте, поэтому в этих случаях нельзя просто использовать len для получения количества строк. Скорее, вам придется зацикливаться и считать строку за строкой, как показано в решении.
Подсчет символов конца строки при чтении файла по байтам фрагментами разумного размера является ключевой идеей третьего подхода. Вероятно, он наименее интуитивно понятен и не совсем кроссплатформенный, но можно надеяться, что он самый быстрый (например, по аналогии с рецептом 8.2 в Perl Cookbook).
Однако помните, что в большинстве случаев производительность не имеет большого значения. Когда это имеет значение, временной сток может быть не таким, как подсказывает вам ваша интуиция, поэтому вам никогда не следует доверять своей интуиции в этом вопросе — вместо этого всегда сравните и измеряйте. Например, я взял типичный файл системного журнала Unix среднего размера, чуть более 18 МБ текста в 230 000 строк:
и я настроил следующий тестовый фреймворк Bench.py :
Как видите, разница в производительности почти не имеет значения: разница в 10% или около того в одной вспомогательной задаче — это то, что ваши пользователи даже не заметят.Тем не менее, самый быстрый подход (для моих конкретных обстоятельств, дешевый, но совсем новый ПК с популярным дистрибутивом Linux, а также этот конкретный тест) — это скромный метод цикла на каждой строке, а самый медленный — амбициозный метод. который подсчитывает терминаторы строк по частям. На практике, если мне не приходилось беспокоиться о файлах размером во многие сотни мегабайт, я всегда использовал самый простой подход (то есть первый из представленных в этом рецепте).
См. также
Раздел Справочник по библиотеке, посвященный файловым объектам и модулю времени; Поваренная книга Perl Рецепт 8.2.
Получите Python Cookbook прямо сейчас с онлайн-обучением O’Reilly.
Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.
Как мы можем получить количество строк или количество слов в файле? Самый простой способ подсчитать количество строк, слов и символов в текстовом файле — использовать команду Linux «wc» в терминале.
Команда «wc» в основном означает «количество слов», и с различными необязательными параметрами ее можно использовать для подсчета количества строк, слов и символов в текстовом файле.
Чтобы подсчитать количество строк, используйте "wc" с "l" как
Чтобы подсчитать количество слов, используйте «wc» с опцией «w», как
Чтобы подсчитать общее количество символов, используйте "wc" с "c" как
Использование команды wc без параметров позволит вам получить количество байтов, строк и слов (параметры -c, -l и -w).
Подсчет слов, символов и строк в нескольких файлах
Команда wc может принимать несколько файлов одновременно и выдавать вам количество слов, символов и строк. Чтобы получить количество из нескольких файлов, вы просто называете файлы с пробелом между ними. Также это даст вам общее количество. Например, чтобы подсчитать количество символов (-m), слов (w) и строк (-l) в каждом из файлов file1.txt и file2.txt, а также общее количество для обоих, мы просто использовали бы
Мы получили бы результаты в удобной табличной форме
Как подсчитать файлы определенного типа в каталоге?
Можно также с умом использовать команду «wc» на терминале и найти количество файлов (или файлов определенного типа) в каталоге. Например, чтобы найти количество pdf-файлов в каталоге
И помните, что первая строка оператора «ls -l» — это описание. Следовательно, общее количество pdf-файлов на один меньше, чем результат «ls -l *.pdf | wc -l“.
Мы только что видели пример использования оператора вертикальной черты «|». считать файлы. Здесь мы передали вывод команды «ls -l *.pdf» в «wc». Или способность передавать (или связывать) несколько команд является отличительной чертой Linux. Мы можем сделать то же самое для многочисленных сценариев. Например, если мы хотим подсчитать всех пользователей, которые в данный момент вошли в систему, мы можем сделать
Как получить количество строк, соответствующих шаблону в файле?
Если вы хотите подсчитать количество строк, соответствующих строковому шаблону в текстовом файле, команда «grep» с параметром «-c» очень удобна.
Office 365 профессиональный плюс переименовывается в Приложения Microsoft 365 для предприятий. Для получения дополнительной информации об этом изменении прочитайте эту запись в блоге.
Симптомы
В Microsoft Excel при сохранении рабочего листа в виде файла с форматированным текстом (с разделителями-пробелами) (.prn) любые символы после двухсотсорокового символа переносятся на следующую строку.
Если несколько строк на одном листе содержат текст, длина которого превышает 240 символов, перенос текста начинается со строки, следующей за последней строкой, содержащей текст.
Например, рассмотрим следующий лист:
Ячейка Количество символов A1 < td>40A2 255 A3 10< /td> A4 21 A5 2 < /tr>A6 52 < tr>A7 255 A8 5 A9 3 A20 13 Полученный форматированный текстовый файл содержит строки со следующим количеством символов:
Номер строки Символы 1 40 2 240 3 10 td> 4 21 5 2 tr>6 52 7 240 8 5 9 3 10-19 0 20 13 21< /td> 0 22 15 23-26 0 27 15 После последней строки (в данном примере это строка 20) нумерация строк начинается с 1 для переносимых строк. По сути, строка 21 соответствует строке 1, строка 22 соответствует строке 2 и т. д.
Причина
Это происходит из-за того, что форматированные текстовые файлы (с разделителями-пробелами) (.prn) имеют ограничение в 240 символов в строке.
Временное решение
Microsoft предоставляет примеры программирования только для иллюстрации, без явных или подразумеваемых гарантий. Это включает, но не ограничивается, подразумеваемые гарантии товарного состояния или пригодности для конкретной цели. В этой статье предполагается, что вы знакомы с демонстрируемым языком программирования и инструментами, которые используются для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры, чтобы обеспечить дополнительную функциональность или создавать процедуры в соответствии с вашими конкретными требованиями. Чтобы создать текстовый файл с разделителями-пробелами, длина строки которого превышает ограничение в 240 символов, используйте макрос, аналогичный следующему образцу макроса.
Перед запуском этого макроса сделайте следующее:
- Выберите ячейки, которые необходимо включить в текстовый файл.
- Убедитесь, что ширина столбцов достаточна для просмотра самой большой строки в каждом столбце. Максимальная ширина столбца для одного столбца Excel составляет 255 символов при использовании шрифта фиксированной ширины.
- Используйте команды меню «Стиль», чтобы отформатировать рабочий лист для использования шрифта фиксированной ширины. Например, Courier — это шрифт фиксированной ширины.
Следующий пример кода можно изменить для экспорта данных, разделенных символами, отличными от пробела. Перед запуском этого примера макроса необходимо выбрать диапазон данных для экспорта.
Выходной файл, создаваемый этой процедурой, по определению отличается от файла форматированного текста (*.prn). Форматированный текстовый файл по определению не может содержать более 240 символов в строке. Кроме того, форматированный текстовый файл также содержит информацию о шрифтах принтера. В этом примере макроса нет. Это решение обеспечивает гибкость при экспорте в текстовые файлы.
Читайте также:
- Если строка содержит заданную строку,
- Для каждой строки проверьте, содержит ли она заданную строку или нет.