PDA

Показать полную графическую версию : [решено] Автоматический поиск и замена текста в файле


Touch_
28-07-2019, 16:39
Есть файл где большой список слов на русском языке.
~14 000 строк.
Где слова могут повторяться.
Необходимо каждое слово или несколько слов заменять на свое число.
Есть второй файл где содержится список: строки вида- число слово -на пример( 14 День Трудящихся)
Необходимо в первом файле находить слова, и заменять их на соответствующие им число.
Прощу вашей помощи.

Patroklos
28-07-2019, 16:46
Мне кажется что шансы что тебе помогут сильно возрастут если ты загрузишь на форум эти два файла.
ЗЫ: не забудь заархивировать.

Touch_
28-07-2019, 17:00
Прикрепил архив.
Файл по меньше сделал по кол-ву строк.

Touch_
28-07-2019, 18:09
Кстати, а как насчёт больших/маленьких букв? »
А что с ними?
Если нужно могу привести их к нижнему регистру.

Patroklos
28-07-2019, 18:19
Попытка номер 2

megaloman
28-07-2019, 18:48
Patroklos, Спасибо. Открыл во второй попытке ...

Patroklos
28-07-2019, 19:04
Был рад помочь.

megaloman
28-07-2019, 21:40
FileTxt = "Z:\Box_Arc\txt_file\1.txt"
FileNum = "Z:\Box_Arc\txt_file\2.txt"
FileOut = "Z:\Box_Arc\txt_file\1.rep.txt"

Delim=Chr(9)

With CreateObject("Scripting.FileSystemObject")
With .OpenTextFile(FileTxt, 1, False)
InTxt = .ReadAll
.Close
End With
With .OpenTextFile(FileNum, 1, False)
MasNum = Split(.ReadAll, vbCrLf)
.Close
End With

For Each Fin In MasNum
If Len(Fin) <> 0 Then
i = InStr(1, Fin, Delim)
If i <> 0 Then
Rep = Mid(Fin, 1, i - 1)
Fin = Mid(Fin, i + 1)
InTxt = Replace(InTxt, Fin, Rep)
End If
End If
Next

With .OpenTextFile(FileOut, 2, True)
.Write InTxt
.Close
End With
End With

MsgBox "Script done"FileOut может совпадать с FileTxt
Задачу делал для предложенных образцов файлов

Touch_
29-07-2019, 17:24
megaloman, благодарю работает.
Попробовал на другом файле замена прошла хорошо, только одну строчку скрипт не заменил.
Но это не принципиально поправил руками.

megaloman
29-07-2019, 17:55
Touch_, только одну строчку скрипт не заменил. Если это не разовая задача, надо бы разобраться, почему не заменил. Имхо, несоотаетствие текста справочнику, например, большие/маленькие буквы, или пробел лишний, или еще что-нибудь.

Touch_
29-07-2019, 19:41
megaloman, Вот прикрепил файлы с работой скрипта.
Не понравилась ему строчка: Международный женский день (8 Марта)

megaloman
29-07-2019, 20:07
Международный женский день (8 Марта)
Международный женский день (8 - Марта)
Первая строка - 1.txt
Вторая -2.txt
Несоответствие, как я и предполагал.




© OSzone.net 2001-2012