Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите решить задачу на питоне 
:(
    Опции темы
nightvi
Дата 10.3.2013, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 20.7.2007

Репутация: нет
Всего: нет



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

Код

>>> import re
>>> filename = r"book.txt"
>>> file = open(filename)
>>> line = file.readlines()
>>> new = re.sub (r'\bкнига\b', 'тетрадь', line)
>>> open ('wrbook.txt', w).write(new)


Я только начал изучать питон и много не знаю. Помогите плиз, завтра сдавать работу надо
PM MAIL   Вверх
ilnurgi
Дата 10.3.2013, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



python 2.7
Код

# coding: utf-8
data = open('book.txt').read().decode('кодировка файла')
data.replace(u'книга', u'тетрадь')
data.replace(u'Книга', u'Тетрадь')
open('new_book.txt','w').write(data.encode('требуемая кодировка'))

PM MAIL   Вверх
nightvi
Дата 10.3.2013, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 20.7.2007

Репутация: нет
Всего: нет



Спасибо а обязательным условием является использование re.sub

PM MAIL   Вверх
nightvi
Дата 10.3.2013, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 20.7.2007

Репутация: нет
Всего: нет



Попробовал сделать но почемуто не помнялись слова. и после строчки data.replace(u'книга', u'тетрадь')
вывелось вот такое 
Код

u'\ufeff\u0414\u0438\u043d\u043e\u0437\u0430\u0432\u0440 (\u043b\u0430\u0442. \u043e\u0442 \u0434\u0440.-\u0433\u0440\u0435\u0447.
 \u03b4\u03b5\u03b9\u03bd\u03cc\u03c2 \u2014 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0439, 
\u0443\u0436\u0430\u0441\u043d\u044b\u0439, \u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0438
 \u03c3\u03b1\u1fe6\u03c1\u03bf\u03c2 \u2014 \u044f\u0449\u0435\u0440, \u044f\u0449\u0435\u0440\u0438\u0446\u0430) \u2014 
\u043d\u0430\u0434\u043e\u0442\u0440\u044f\u0434 \u043d\u0430\u0437\u0435\u043c\u043d\u044b\u0445 
\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0438\u043c 
\u0437\u0443\u0431\u044b \u0440\u0430\u043d\u0435\u0435 
\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430, 
\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d \u0434\u0430\u043b 
\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u0433\u0443\u0430\u043d\u043e\u0434\u043e\u043d 
(\u0431\u0443\u043a\u0432. \xab\u0438\u0433\u0443\u0430\u043d\u043e\u0437\u0443\u0431\u044b\u0439\xbb) \u0437\u0430 
\u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e \u0437\u0443\u0431\u0430 \u0441 \u0437\u0443\u0431\u043e\u043c 
\u044f\u0449\u0435\u0440\u0438\u0446\u044b \u0438\u0433\u0443\u0430\u043d\u044b. \u041e\u043d \u0436\u0435 \u0432 1833 
\u0433\u043e\u0434\u0443 \u043e\u043f\u0438\u0441\u0430\u043b \u0433\u0438\u043b\u0435\u043e\u0437\u0430\u0432\u0440a \u2014 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u044f 
\u043f\u0430\u043d\u0446\u0438\u0440\u043d\u044b\u0445 \u044f\u0449\u0435\u0440\u043e\u0432 \u0430\u043d\u043a\u0438\u043b\u043e\u0437\u0430\u0432\u0440\u043e\u0432.\n\n'

 и все содержимое файла книга перенеслось в файл тетрадь

Это сообщение отредактировал(а) nightvi - 10.3.2013, 11:41
PM MAIL   Вверх
nightvi
Дата 10.3.2013, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 20.7.2007

Репутация: нет
Всего: нет



Сделал вот так 

Код

# coding: utf-8
import re
data = open('book.txt').read().decode('utf-8')
new = re.sub(u'книга', u'тетрадь', data)
new = re.sub(u'Книга', u'Тетрадь', new)
open('wrbook.txt','w').write(new.encode('utf-8'))



Все работает но одна проблема есть слово книгалюб его специальное туда внедрили и оно заменяеться на тетрадьлюб  а как сделать чтобы оно оставалось неизменным?
PM MAIL   Вверх
rsm
Дата 10.3.2013, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(nightvi @  10.3.2013,  15:04 Найти цитируемый пост)
как сделать чтобы оно оставалось неизменным?

Изначально регулярное выражение было правильным, нужно вернуть обратно как было:

Код

re.sub(ur'\bкнига\b', u'тетрадь', data)


Цитата(nightvi @  10.3.2013,  15:04 Найти цитируемый пост)
есть слово книгалюб

Нет такого слова, по крайней мере в русском языке - есть книголюб.
PM MAIL   Вверх
nightvi
Дата 11.3.2013, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 20.7.2007

Репутация: нет
Всего: нет



Спасибо, его специально туда внедрили именно с ошибкой  
Однако код не сработал в итоге просто замени \b на пробелы и все заработало
Спасибо

Вот итоговый код
Код

# coding: utf-8
import re
data = open('book.txt').read().decode('utf-8')
new = re.sub(ur' книга ', u' тетрадь ', data)
new = re.sub(ur'Книга ', u'Тетрадь ', new)
open('wrbook.txt','w').write(new.encode('utf-8'))


PM MAIL   Вверх
nightvi
Дата 11.3.2013, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 20.7.2007

Репутация: нет
Всего: нет



Тут еще одну задачу задали помогите!

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

Код

# coding: utf-8
import re
data = open('book.txt').read().decode('utf-8')
Что тут писать не знаю
open('new_book.txt','w').write(new.encode('utf-8'))

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.