Страницы (4): 1 2 3 4 Следующая » +
1
или сразу попытать счастья на stackoverflow?
суть программки такова:
мне нужно делать replace слов в одном текстовом файле и результат записывать в новый .txt
мы тексты китайские перерабатываем для сайта нашего, если бы был способ автоматизировать часть работы, то было бы здорово

То есть программка эта ищет совпадения, меняет его на нужные слова. По этому слову прошлась, переходит к следующему.
Сам, конечно, я такое написать не в состоянии, но нашел уже почти то, что нужно здесь (там можно код посмотреть, она работает, но для замены только одного слова, а мне нужно для группы слов)

в данной проге мне как я понимаю для моих целей (а именно замена многих разных слов), для метода подстановки вместо аргументов String target и String replacement мне нужны массивы типа String[] target и String[] replacement
то есть мне нужен массив слов, которые будут заменяться, и массив слов-субститутов. Верно?

Ну и по идее loop понадобится, но главное не понимаю как туда в аргументы впихнуть array
может ли кто помочь? мне бы такая программка очень помогла в работе с сайтом
спасибо!
ChinesePlus.ru - кликабельные субтитры, лексика HSK, тексты с озвучкой, книги на китайском и др.
2019.01.18
Ответить
2
Такие вещи пишутся на Javascript (HTA-приложение), Python, Powershell. Java это слишком тяжеловесно.

Вот скрипт на powershell:

powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File myFile.txt"
2019.01.18
Ответить
3
2019.01.18Рейхсканцлер Такие вещи пишутся на Javascript, Python, Powershell. Java это слишком тяжеловесно.

Вот скрипт на powershell:

powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File myFile.txt"
это все хорошо, но...

powershell не подойдет. В других языках знаю еще меньше, чем в java
что значит тяжеловесно? я ж не мешки таскать буду)
2019.01.18
Ответить
4
2019.01.18Рейхсканцлер powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File myFile.txt"

это строка для powershell по сути то же самое, что в командной строке вбить sed -i 's/original/new/g' file.txt ? или какие-то отличия? (просто замена в этом же файле, без вывода в новый). Это не то, то же самое можно и просто в текстовом редакторе сделать с интерфейсом готовым под это дело, но это не автоматизирует работу если слов разных много Sad

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

плюс не могу понять как эта миниутилитка на js будет "легковеснее" аналогичной на java? весить будет больше и медленно работать? это же не тот масштаб просто
2019.01.18
Ответить
5
Вот, набросал для вас программку на Питоне для множественной замены. Работает быстро и просто

Код:
import sys
dict = [
   ('утро', 'вечер'),
   ('привет', 'пока')
 ]
s=open(sys.argv[1],'r').read()
for r in dict: s=s.replace(r[0],r[1])
open(sys.argv[2],'w').write(s)

1) Сохраняете ее под любым именем, например, "replace.py"
2) Запускаете через командную строку вида "python replace.py имя_исходного_файла имя_конечного_файла"

В массиве dict перечисляется, соответственно, список всех нужных замен в формате ('что берем', 'на что заменяем').
2019.01.18
Ответить
6
2019.01.18Рейхсканцлер В массиве dict перечисляется, соответственно, список всех нужных замен в формате ('что берем', 'на что заменяем').

вау, просто магия, но есть одна проблемка. Выкидывает ошибку, если слова из массива не найдет, то есть код сработает, только если в текстовом файле обязательно будет найдено слово из массива dict Sad
я хотел сразу базу туда забить определенную для разных текстов, и уже не менять ее (если только новые слова добавлять).
Выручите? сорри за наглость))
2019.01.18
Ответить
7
2019.01.18Рейхсканцлер >на Javascript (HTA-приложение)
да вы поехавший
2019.01.18
Ответить
8
2019.01.18snum23 вау, просто магия, но есть одна проблемка. Выкидывает ошибку, если слова из массива не найдет, то есть код сработает, только если в текстовом файле обязательно будет найдено слово из массива dict Sad
я хотел сразу базу туда забить определенную для разных текстов, и уже не менять ее (если только новые слова добавлять).
Выручите? сорри за наглость))

Ну так оберните в try-except 14
2019.01.18
Ответить
9
2019.01.18snum23 вау, просто магия, но есть одна проблемка. Выкидывает ошибку, если слова из массива не найдет, то есть код сработает, только если в текстовом файле обязательно будет найдено слово из массива dict Sad
я хотел сразу базу туда забить определенную для разных текстов, и уже не менять ее (если только новые слова добавлять).
Выручите? сорри за наглость))

Что-то не воспроизводится у меня (на версии Python 3.7.1). String.replace не должно давать ошибок при отсутствии заменяемой строки. На всякий случай, вот вариант с except (как предлагает 谢尤金):

Код:
import sys
dict = [
  ('утро', 'вечер'),
  ('привет', 'пока')
]
s=open(sys.argv[1],'r').read()
for r in dict:
   try:s=s.replace(r[0],r[1])
   except:pass
open(sys.argv[2],'w').write(s)

2019.01.18Чрезвычайная сила да вы поехавший

На базе JS+HTA можно делать достаточно сложные приложения. С файлами там можно работать через ActiveXObject("Scripting.FileSystemObject"), и задача с replace довольно быстро решается.
2019.01.18
Ответить
10
snum23

В общем, если питоновские скрипты у вас нормально работают, то рекомендую пользоваться именно питоном. Как правило, решение задач на Java оказывается в среднем в 4-5 раз более громоздким, чем на Python (сравните код на JAVA, который вам там на видео предлагали из 45 строк, и код на Python из 10 строк), и для мелких бытовых задачек типа вашей ничего удобнее, мне кажется, нет. Язык очень простой и логичный.

UPD : проверьте там работу на реальном файле с китайскими иероглифами. Могут быть проблемы с кодировкой, тогда надо будет еще пару строк в скрипте дописать.
2019.01.18
Ответить
Страницы (4): 1 2 3 4 Следующая » +