![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Добрый день!
Я как-то давно пробовал Python (кажется, версия 2.3) для обработки текста. На тот момент в Python невозможно было модифицировать найденную строку, а можно было только составить "по кускам" новую строку из старой. Что я имею в виду под "модификацией"? Например, как в Perl: s/мама мыла раму/мама мыла Лену/. Т.е. оператор ищет левую часть и заменяет на левую. 1) можно ли в нынешнем Python делать подобное? 2) поддерживаются ли при замене обратные ссылки? 3) нормально ли распознаются файлы в коридовке cp866? 4) какую версию Python скачать (я видел, что есть 2.6 и есть 3.0, но она, вроде, экспериментальная) Спасибо Это сообщение отредактировал(а) Suppir - 5.6.2009, 14:57 |
|||
|
||||
_Viper_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 8.11.2006 Репутация: 10 Всего: 11 |
1) строки как были неизменяемыми так и остались
3) кодировка автоматом не распознаётся, а так открываются файлы нормально, в любой кодировке ![]() 4) лучше 2.6 |
|||
|
||||
Hydrevt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.10.2008 Репутация: нет Всего: нет |
"Строки неизменяемые" - в том смысле, что нельзя изменять внутри них отдельные символы. ПРо замены и обратные ссылки, думаю, большую часть пояснит пример
Если сторонним редактором исправить заголовок на cp866 и сохранить в кодировке DOS, то при редактировании IDLE русские буквы будут выглядеть нормально, сохраняться всё будет в кодировке DOS, а вот при выполнении полезут Ё©-и, чего и следовало ожидать. Я тоже приходил в Python из Perl, и чего действительно не хватало, так это интерполяции переменных внутри регулярных выражений. Немного помучавшись, написал для этого свой класс; если кому интересно - пишите, код (включая демонстрацию-тест через unittest) пришлю или выложу тут. |
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
_Viper_ - спасибо за ответ.
. to Hydrevt: 1) очень интересно, как общие впечатления от перехода? Помимо обработки текста ![]() 2) насчет интерполяции переменных - вы имеете в виду, что переменные не могут меняться за время обработки регулярного выражения, и что вообще нельзя использовать переменные внутри регулярного выраженя? Например, регулярное выражение /\s$br\.$br\.\s$br$lr+\s/, где $br="[ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]"; а $lr="[йцукенгшщзхъфывапролджэячсмитьбю]". Соответственно, выражение ищет запись фамилии в виде "А.А. Иванов". Можно ли подобное использовать в python? 3) если не сложно, могли бы перевести этот небольшой скрипт на python? (интересна работа с хешами) open I, "1.txt"; # открываем файл исходников open O, ">1.log"; # открывает файл для записи /(.*?N.*?) "/ && # поиск общей части в строках (от начала строки, захватывая символ "N" в середине, до первой кавычки) $a{$1}++==1 && # поиск дублей в общей части print O "$1\n" # вывод дублей в log while <I> Это сообщение отредактировал(а) Suppir - 8.6.2009, 10:11 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |