Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2015 15:33:23

not42
Зарегистрирован: 2015-12-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг информации из текстовых файлов (+композиция/декомпозиция)

Добрый день, уважаемые участники сообщества.
Для расширения границ профессиональной компетенции (я переводчик, который пытается вырасти в инженера локализации) приходится в сжатые сроки осваивать Python для конкретных целей: парсинга, композиции и декомпозиции текстовой информации.

Задача следующая:
Необходимо из каталога (включающего неограниченное количество подкаталогов) извлечь информацию из файлов определенного типа (.txt, .lua), заключенную в двойные кавычки, в отдельный файл.
Также меня интересует, как можно получить адрес извлеченного токена (куска текста), чтобы затем произвести запись в точное место исходного файла, и как можно изменить/задать кодировку полученного текста.

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

Офлайн

#2 Дек. 20, 2015 18:55:49

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Парсинг информации из текстовых файлов (+композиция/декомпозиция)

not42
включающего неограниченное количество подкаталогов
вы можете использовать listdir из модуля os или glob из модуля glob
not42
заключенную в двойные кавычки
Вопросы фильтрации текста решаются обычно модулем re после изучения языка регулярных выражений.
В сложных случаях можно использовать например pyparsing.
not42
как можно получить адрес извлеченного токена (куска текста),
re позволяет получить позицию.
not42
чтобы затем произвести запись в точное место исходного файла
Это невозможно. Точнее обычные файлы не имеют эффективной функции добавления / изменения текста в середине файла. Поэтому программисты никогда этого не делают.
Текст обычно загружается в память там обрабатывается, и только потом записывается.
not42
и как можно изменить/задать кодировку полученного текста.
У текста в оперативной памяти нет кодировки. (Если быть точнее то используется unicode). Кодировку можно задать при чтении из файла или при запись в файл. Операции открытия файла имеют ключик encoding.



Офлайн

#3 Дек. 21, 2015 02:41:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Парсинг информации из текстовых файлов (+композиция/декомпозиция)

doza_and
вы можете использовать listdir из модуля os или glob из модуля glob
os.walk() + (os.path.splitext() | re.search())

not42
Необходимо из каталога (включающего неограниченное количество подкаталогов) извлечь информацию из файлов определенного типа (.txt, .lua)
Попробуй для начала вывести на экран полные пути к нужным файлам.
Это самое простое во всей этой задаче.

Так-то задача простая, но вот это
not42
я переводчик, который пытается вырасти в инженера локализации
делает неподъёмными даже элементарные вещи. Здесь нужно по-другому думать.

У тебя должно быть три программы:
1. Одна добывает пути к файлам.
2. Вторая проводит преобразования с одним файлом.
3. Третья передаёт пути, добытые первой программой, во вторую, а затем сохраняет полученный результат.
И эти программы нужно объединить в один скрипт.



Отредактировано py.user.next (Дек. 21, 2015 02:43:57)

Офлайн

#4 Дек. 21, 2015 11:46:29

not42
Зарегистрирован: 2015-12-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг информации из текстовых файлов (+композиция/декомпозиция)

py.user.next и doza_and, спасибо за помощь, буду разбираться! Вода камень точит, а в моей работе воды много

Офлайн

#5 Дек. 26, 2015 17:15:21

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Парсинг информации из текстовых файлов (+композиция/декомпозиция)

doza_and
Это невозможно. Точнее обычные файлы не имеют эффективной функции добавления / изменения текста в середине файла. Поэтому программисты никогда этого не делают.

Никогда не давайте советов космического масштаба, а то вы выглядите клоуном.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version