Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Добавить данные в текстовый документ

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
              Можно ли как-то решить такую задачу:
 
   Есть два файла 'txt'.
   Первый:
 
00:00:03.471 --> 00:00:07.975
   
 
 
00:00:29.263 --> 00:00:36.270  
 
 
 
00:00:49.250 --> 00:00:51.719  
 
 
 
00:00:52.553 --> 00:00:56.857  
 
 
   Второй:
 
aaaaaa
 
 
bbbbbb
 
 
ccccccc
dddddd
 
 
eeeeee
kkkkkkk
 
   Надо вставить текст после цыфр. Например:
   
00:00:29.263 --> 00:00:36.270
 
ccccccc
dddddd
 
   итд.
 
   Но решение этой задачи сильно усложняется тем, что текст состоит из одной и двух строчек в разных местах. Это приводит к тотальному несовпадению строчек в таблице.
 Можно было бы выделить пустые строчки и вставить текст из буфера обмена, но Excel, к сожалению, черезстрочную вставку не поддерживает.

Всего записей: 2200 | Зарегистр. 09-01-2010 | Отправлено: 11:37 22-02-2021 | Исправлено: Maz, 21:47 22-02-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
На PowerShell как-то так
 
В файле Subtitle.vtt надо перед запуском удалить первые три строки.  

Цитата:
WEBVTT  
X-Cue-Content: image
 
 

 

Код:
$file1 = New-Object System.IO.StreamReader{C:\WORK\Subtitle.vtt}
$file2 = New-Object System.IO.StreamReader{C:\WORK\s.txt}
New-Item C:\WORK\file_out.txt -type file -force
 
$line_number = 1
while (($current_line1=$file1.ReadLine()) -ne $null)
{
if ($current_line1 -ne "" -and (-Not $current_line1.StartsWith("https")) ) {  
   Add-Content -Path C:\WORK\file_out.txt -Value $current_line1.Substring(0,29) -Encoding Unicode
   If (($current_line2=$file2.ReadLine()) -ne "" -and $current_line2 -ne $null -and $current_line2 -ne "00:00:00.000 --> 00:00:00.-001") {Add-Content -Path C:\WORK\file_out.txt -Value $current_line2 -Encoding Unicode}
   while (($current_line2=$file2.ReadLine()) -ne "" -and $current_line2 -ne $null -and $current_line2 -ne "00:00:00.000 --> 00:00:00.-001") {Add-Content -Path C:\WORK\file_out.txt -Value $current_line2 -Encoding Unicode}
   Add-Content -Path C:\WORK\file_out.txt -Value "" -Encoding Unicode  
   $line_number++
   }
}
 
$file1.Dispose()
$file2.Dispose()
 

 
Сохранить в файл с расширением .ps1 (например script.ps1) и запускать из консоли
PowerShell -File script.ps1
 
 

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 16:56 22-02-2021 | Исправлено: Fenrizz, 08:05 23-02-2021
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
                               Fenrizz
    Процесс пошёл! Пока ещё не всё гладко, но некоторые шероховатости, я думаю, можно отполировать. Для детального понимания Вами этой задачи и облегчения её решения я, с Вашего позволения, дам подробное описание в PM.

Всего записей: 2200 | Зарегистр. 09-01-2010 | Отправлено: 20:24 22-02-2021 | Исправлено: LZAA, 11:19 23-02-2021
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
                                      Fenrizz
   OK. Теперь сценарий работает корректно. Получается именно то, что нужно.
  Мне кажется (сугубо дилетантски), что успеху способствует и то, что в коде прямо указано - '-Encoding Unicode'.
   Но кодировка текста, как таковая мне, всё же, не даёт покоя. Подробно напишу в PM.
 

Всего записей: 2200 | Зарегистр. 09-01-2010 | Отправлено: 11:46 23-02-2021
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Программы » Добавить данные в текстовый документ


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru