Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 26.10.2015
Сообщений: 7

Поиск и редактирование в документе

13.04.2019, 18:25. Показов 889. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, целые сутки провел за написанием программы: Собирает данные с .txt документа, среди них, ищет текст оригинала, если находит, удаляет строку с ним и пишет новый перевод в конце документа аля (petia=петя), если не находит, то сразу пишет перевод в конце документа.

Программа вроде бы работает, но похоже не осиливает большие объемы данных (более 200к символов).

Выдает следующие ошибки:

Traceback (most recent call last):
File "/Start project.py", line 7, in <module>
list = list(doc)

File "\Python\Python37-32\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors, decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 2626: character maps to <undefined>

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
p=input("Укажите путь файла перевода : ")
with open(p) as doc:
    while(1==1):
        a = str(input("Введите оригинал : "))
        a = a+'='
        b = str(input("Введите перевод : "))
        list = list(doc)
        for num, line in enumerate(list, 1):
            if a in line:
                del_line = int(num) - 1
                with open(p, "w") as doc:
                    del list[del_line]
                    for n in list:
                        doc.write(n)
        else:
            with open(p, "a") as doc:
                a = '\n' + a + b
                print(a)
                for n in a:
                    doc.write(n)
Добавлено через 58 минут
Что же, потыкавшись в поисковик я нашел решение, пишу для тех к столкнется с подобной проблемой:
Всё дело в кодировке, о чем и сообщает ошибка UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 2626: character maps to <undefined>.
Чтобы прочитать файл, закодированный в utf-8, необходимо явно кодировку передать:
Python
1
2
3
4
5
import csv
 
with open('database.csv', encoding='utf-8', newline='') as file:
    reader = csv.DictReader(file)
    rows = list(reader)
В моём случае:

Python
1
2
3
4
5
6
import csv
p = input("Укажите путь файла перевода : ")
with open(p, encoding='utf-8', newline='') as doc:
    reader = csv.DictReader(doc)
    rows = list(reader)
    while(1==1):
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.04.2019, 18:25
Ответы с готовыми решениями:

Редактирование колонтитулов и страниц в документе Word
Добрый вечер форумчанам! Код VBA выполняется в Excel оттуда создаю с помощью CreateObject(&quot;Word.Application&quot;) документ Word, в...

Редактирование таблицы в существующем документе word
Всем привет. Есть таблица в документе word, необходимо в конец этой таблицы добавлять строку и в эту строку вписывать значения. Помогите...

Редактирование любого текста в документе Word - Delphi
Здравствуйте. Допустим есть текст в документе word. С помощью поиска я нашел текст №1 и текст №2. И мне нужно отредактировать текст который...

1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
13.04.2019, 20:01
Цитата Сообщение от Helpi Посмотреть сообщение
Что же, потыкавшись в поисковик я нашел решение, пишу для тех к столкнется с подобной проблемой
Молодца. Только можно было ведь просто документацию по функции open прочитать, в которой написано что на windows для чтения файлов используется по умолчанию кодировка локали, которая установлена в ОС: windows-1251 для русской локали. А на linux это utf-8. Соответственно, чтобы не зависеть от платформы, кодировку файла нужно знать заранее и всегда указывать в параметре encoding.
The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any text encoding supported by Python can be used
Ну а если кодировка может быть неизвестна (допустим, файл поступает из внешнего источника, который не контролируется программистом), существует библиотека для предварительного детектирования кодировки.


P.S.Большая часть проблем начинающих программистов связана с полным игнорированием документации по языку и библиотекам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2019, 20:01
Помогаю со студенческими работами здесь

Поиск слов в документе
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Нечеткий поиск в документе
Добрый день, форумчане. Подскажите, пожалуйста, как реализовать поиск ближайшего похожего текста в документе Word. Есть предложение...

7.7 Контекстный Поиск В Документе
Добрый день. В одном документе пропал контекстный поиск, причем во всех колонках сразу. В чем может быть дело?

Поиск по id в XML документе
Помогите организовать поиск в данной программе

Поиск в документе Excel
можно ли с помощью Delphi встроить поиск в excel документе? и как это сделать... заранее спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru