3

Мне в основном нужен текстовый редактор, который отображает текст в сетке, чтобы я мог знать точные номера столбцов текста. Программное обеспечение для численного моделирования, которое я использую, TOUGH+ (написано на Фортране), имеет строгий формат, и мне нужно указать свои входные файлы в точном формате.

Неуместное письмо здесь и там может сделать весь файл бесполезным. Поэтому мне нужно это, чтобы быстро взглянуть на входные файлы и узнать / проверить, какой текст начинается и заканчивается в каком столбце. В противном случае файл иногда сбивает с толку.

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

Фрагмент входного файла со строками, разделяющими значения

Самая полезная вещь, которую я пробовал - это плагин TextFX с Notepad++, но он очень не элегантный, поскольку в нем просто помещается текст символов, чтобы увидеть номера столбцов.

Текст FX плагин

Лучший способ описать мое требование - это электронная таблица, но она занимает всего один символ в ячейке.

4 ответа4

1

Публикация в качестве ответа, поскольку она слишком велика даже для нескольких комментариев. Раскрытие: я не пробовал ни одного из них, но некоторые были приняты в качестве ответов.

  • Несколько полей в редакторе Atom? на ТА говорит, что это возможно, и ответ был принят.
  • IntelliJ IDE: Как добавить одно или несколько полей на этом сайте, есть принятый ответ о том, что вы можете сделать это с помощью Sublime text (который не является IDE), плюс комментарий, со скриншотами, показывающими, как это сделать с PyCharm, который отличная и бесплатная JetBrains (даже для коммерческого использования) Python IDE.

Лично я нашел бы достаточно простым написать скрипт на Python для:

  • убрать несколько пробелов из каждой строки
  • разбить каждую строку на несколько слов
  • вставьте пробелы по мере необходимости
1

Это может быть легко решено с помощью VBA (Macro):

Этот код будет проходить по всем рабочим листам в активной рабочей книге , находить значение в SearchRange на каждом листе и сохранять значения в рабочем листе с именем FindAddressWorksheet в строке Sheetindex столбца A

Sub FindAddress()

Sheetindex = 1
For Each ws In Worksheets

  If ws.Name <> FindAddressWorksheet Then
    FindAddressWorksheet.Cells(Sheetindex, 1).Value = _
    ws.Range(Myrange).Value
    Sheetindex = Sheetindex + 1
  End If
Next
End Sub

Как это устроено:

  • Скопируйте и вставьте этот макрос как стандартную модель.
  • Введите все данные для поиска и назовите их как Myrange (это имя доступно для редактирования).
  • Назовите любой пустой лист как FindAddressWorksheet (имя листа можно редактировать), прежде чем запускать макрос .

Это можно использовать, если вы работаете только на листе:

Sub FindRange()

    Dim rngX As Range
    Dim Data As String

    Data = InputBox("Write Value", "Obtain Cell Address")
    Set rngX = Worksheets("Sheet1").Range("A1:AFD65000").Find(Data, lookat:=xlPart)

    If Not rngX Is Nothing Then
        MsgBox "Found at " & rngX.Address
    End If

End Sub

NB

  • Имя листа и диапазон данных доступны для редактирования.
1

Если вы можете использовать Microsoft Access, вы можете использовать метод преобразования текста в столбец, аналогичный Excel, но с преимуществом сохранения вашей спецификации для повторного использования. Это импортирует ваш текстовый файл фиксированной ширины в легко читаемую таблицу данных. Повторить импорт можно всего за три или четыре клика.

(Я не знаю, относится ли это к вам, поэтому я бы поставил это как комментарий, но у меня нет репутации для этого.)

1

Я заметил, что вы пометили вопрос с помощью Excel. Вы можете использовать текст для столбцов, указать фиксированную ширину, затем добавить строку разрыва при каждом разрыве столбца (немного утомительно), а затем использовать идентификатор столбца в качестве идентификатора.

Более чистым решением было бы использовать макрос /VBA для разделения, что-то вроде

Selection.TextToColumns Destination:=Range("A2"), DataType:=xlFixedWidth, _     
    FieldInfo:=Array( _
        Array(0, 1), _
        Array(1, 1), _
        Array(2, 1), _
        Array(3, 1), _
        Array(4, 1), _
        Array(5, 1)), _
        TrailingMinusNumbers:=True

Расширение количества элементов массива до соответствующего количества столбцов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .