Как создать сценарий (оболочки) для копирования содержимого .srt в соответствующие столбцы Excel?

У меня есть вопрос о том, как автоматизировать процесс копирования содержимого из файла .srt в файл .xls.

Я хочу убедиться, что содержимое файла .srt можно вставить в соответствующие столбцы .xls (например, время входа в столбец B, время ожидания в столбец C, субтитры в столбец E).

Чтобы избежать ручного копирования и вставки, есть ли способ написать этот процесс? Любые идеи?

Заранее большое спасибо! :)

ОБНОВЛЕНИЕ: я только что обнаружил, что Subtitle Edit может сохранять .srt как csv, который сможет преобразовать файл в файл Excel. Это удобно! Но есть еще одна проблема, мне нужно скопировать содержимое из этого csv в другой шаблон Excel, который имеет другую структуру, поэтому я не могу напрямую скопировать и вставить значения в csv. Я работаю над тем, чтобы сделать это проще...

Пока не могу публиковать изображения, но ситуация такова, что в то время как каждый текст time-in в преобразованном srt файле csv занимает одну строку, текст time-in в шаблоне Excel занимает две строки, поэтому я не могу напрямую скопируйте и вставьте все тексты из одного файла Excel в другой. Есть ли более простые способы сделать это? Благодарю вас!


person Penny    schedule 28.07.2015    source источник
comment
Как выглядит ваш файл .srt? Вставьте фрагмент. что ты уже испробовал?   -  person Micah Elliott    schedule 29.07.2015
comment
Чтобы помочь вам больше, пожалуйста, вставьте свои входные данные и укажите желаемый результат. Просто на ваш вопрос (в аналогичном way как это сделал buff), вам не нужно публиковать изображения . Извините, ваше описание слишком загадочно для меня.   -  person ryuichiro    schedule 31.07.2015


Ответы (2)


В сценарии вы можете использовать perl для замены:

perl -0777 -pe 's/\n([^\n])/\t$1/g; s/ --> /\t/g' input.srt | \
perl -ne 's/^\t//; print unless /^$/' > output.csv

Для этого примера ввода

1
00:00:01,478 --> 00:00:04,020
Srt sample

2
00:00:05,045 --> 00:00:09,545
<i>italic</i> font

3
00:00:09,378 --> 00:00:13,745
<b>bold</b> font

4
00:00:14,812 --> 00:00:16,144
Multi
Line

вы получите следующий вывод:

1   00:00:01,478    00:00:04,020    Srt sample
2   00:00:05,045    00:00:09,545    <i>italic</i> font
3   00:00:09,378    00:00:13,745    <b>bold</b> font
4   00:00:14,812    00:00:16,144    Multi   Line

Относительно команды: есть две связанные команды perl

  • Первый выполняет тяжелую работу: заменяет новые строки и стрелки табуляциями (сохраняя двойную новую строку как одну новую строку).

  • Второй только делает некоторую очистку, он удаляет вкладки в начале строки и удаляет лишние пустые строки.

person buff    schedule 29.07.2015
comment
Большое спасибо! Это действительно полезно! Я собираюсь попробовать это позже! - person Penny; 30.07.2015
comment
Я только что обнаружил, что Subtitle Edit может сохранить .srt как csv, который сможет преобразовать файл в файл Excel. Это удобно! Но есть еще одна проблема, мне нужно скопировать содержимое из этого csv в другой шаблон Excel, который имеет другую структуру, поэтому я не могу напрямую скопировать и вставить значения в csv. Я работаю над тем, чтобы сделать это проще... - person Penny; 30.07.2015

В Vim я бы использовал:

:%s/\(.\)$\n\|-->/\1\t/g | :g/^$/d | :%s=\s\+$==

Я до сих пор не знаю скрипта, но теперь его легко импортировать в Excel :-)

Это означает найти строку, оканчивающуюся на символ, и заменить ее этим символом и табулятором или найти символы --> и заменить их табулятором, а затем удалить пустые строки и, наконец, удалить пробелы в конце строк.

person ryuichiro    schedule 28.07.2015
comment
Спасибо!! Я обнаружил, что вы также можете сохранить .srt как csv в Редактировании субтитров! - person Penny; 30.07.2015