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

Программа для замены текста из одной базы на рандомные значения из другой

07.01.2019, 14:17. Показов 2321. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите пожалуйста, уже неделю не могу найти, как сделать такую программу:

В файле 1.txt находится текст вида:
Анна пишет: привет
Анна пишет: пока
Анна пишет: как дела
Анна пишет: что нового
Анна пишет: всем привет
Анна пишет: круто

Слова "Анна" нужно заменить на рандомные слова из файла 2.txt вида:
Ирина
Оксана
Светлана

Помогите пожалуйста, не знаю как это сделать(
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2019, 14:17
Ответы с готовыми решениями:

Программа для замены текста
в файле необходима заменить первые цифры на другие и сделать копию этого файла файл содержит следующее...

Программа для замены текста во многих файлах
Здравствуйте! Подскажите бесплатную программу для одновременной замены текста во многих файлах, нормально работающую с русским языком во...

Почему функция одной БД не видна для другой базы?
в общем есть две БД, в одной базе функция VBA для запроса, другая база формирует отчет из результатов этого запроса. при формировании...

11
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,300
07.01.2019, 14:46
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from random import randint
 
sent = []
names = []
 
with open('2.txt', 'r+') as file:
    names = file.read().splitlines()
 
with open('1.txt', 'r+') as file:
    sent = file.read().splitlines()
    ready = []
    for s in sent:
        words = s.split()
        words.pop(0)
        words.insert(0, names[randint(0, len(names)-1)])
        ready.append(' '.join(words))
    file.seek(0)
    file.write('\n'.join(ready))
    file.truncate()
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 8
07.01.2019, 15:14  [ТС]
Спасибо, все работает, но я не дописал ТЗ, так как думал, что нет никакой разницы, но оно не работает так(
Мне нужно менять текст в строках типа:

{"app":"bizon-script-editor","format":"1.0","room":"7277: python" ,"data":[
{"action":"goOnline","timeshift":0,"data ":{"url":"http://www.youtube.com"}},
{"action":"post","timeshift":15000,"data ":{},"username":"Андрей","message":"Прив ет) ","role":""},
{"action":"post","timeshift":20000,"data ":{},"username":"Андрей","message":"Слыш но","role":""},
{"action":"post","timeshift":72000,"data ":{},"username":"Андрей","message":" Хочу стать","role":""},
{"action":"post","timeshift":205000,"dat a":{},"username":"Андрей","message":"Инт ересно","role":""}
]}

То есть программа должна искать определенное имя, например "Андрей" и менять его на рандомное из файла 2.txt
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,300
07.01.2019, 15:32
Так даже проще

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import json
from random import randint
 
names = []
 
with open('2.txt', 'r+') as file:
    names = file.read().splitlines()
 
with open('1.txt', 'r+') as file:
    json_str = file.read()
    json_data = json.loads(json_str)
 
    for data in json_data['data']:
        if 'username' in data:
            data['username'] = names[randint(0, len(names)-1)]
    file.truncate(0)
    file.seek(0)
    file.write(json.dumps(json_data, ensure_ascii=False))
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 8
07.01.2019, 15:53  [ТС]
Не работает и выдает ошибку, может я что-то не так делаю? Снимок ошибки прикрепил во вложении
Миниатюры
Программа для замены текста из одной базы на рандомные значения из другой  
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,300
07.01.2019, 16:09
Это проблема с кодировкой

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import json
from random import randint
import codecs
 
names = []
 
with open('2.txt', 'r+') as file:
    names = file.read().splitlines()
 
with open('1.txt', 'r+', encoding='utf-8') as file:
    json_str = file.read()
    json_data = json.loads(json_str)
 
    for data in json_data['data']:
        if 'username' in data:
            data['username'] = names[randint(0, len(names)-1)]
    file.truncate(0)
    file.seek(0)
    file.write(json.dumps(json_data, ensure_ascii=False).encode('utf8').decode("utf-8"))
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 8
07.01.2019, 16:16  [ТС]
По прежнему то же самое((((((
Миниатюры
Программа для замены текста из одной базы на рандомные значения из другой  
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,300
07.01.2019, 16:21
Прикрепи файл, что-то с кодировкой
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 8
07.01.2019, 16:23  [ТС]
Вот весь пакет
Вложения
Тип файла: zip пакет.zip (38.7 Кб, 9 просмотров)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.01.2019, 16:26
Цитата Сообщение от filipkof Посмотреть сообщение
По прежнему то же самое((((((
Файл сохрани в UTF-8 без BOM. И впредь делай так всегда.
1
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,300
07.01.2019, 16:33
Лучший ответ Сообщение было отмечено filipkof как решение

Решение

Один файл utf-8 с BOM, второй win-1251,лучше оба сохранить как win-1251, код будет проще

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import json
from random import randint
import codecs
 
names = []
 
with open('2.txt', 'r+') as file:
    names = file.read().splitlines()
 
with open('1.txt', 'r+') as file:
    json_str = file.read()
    json_data = json.loads(json_str)
 
    for data in json_data['data']:
        if 'username' in data:
            data['username'] = names[randint(0, len(names)-1)]
    file.truncate(0)
    file.seek(0)
    file.write(json.dumps(json_data, ensure_ascii=False))
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 8
07.01.2019, 16:56  [ТС]
Все работает, круто, спасибо тебе бро)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2019, 16:56
Помогаю со студенческими работами здесь

Почему программа выводит сообщение на одной строке а запрос ввода значения на другой?
Всем добрый день. Подскажите пожалуйста нубу, почему программа выводит сообщение на одной строке а запрос ввода значения на другой, а также...

Создать макрос для замены значения в столбце, если другой содержит определенный элемент
Здравствуйте! Есть адрес, разбитый на несколько элементов, необходимо удалить ненужные элементы (их может и не быть) и привести адрес...

Имеется программа, слова для замены берутся из файла, что изменить чтобы для замены писать свое предложение в консоли
program Project3_ready; {$APPTYPE CONSOLE} uses SysUtils, Windows; const

Есть программа или скрипт для перехода от одной к другой странице
Есть программа или скрипт для перехода от одной к другой странице??? тоесть нажатием CTRL+вправо и влево.

Функция замены одного текста на другой
Доброго времени суток дорогие программисты. Суть вопроса в следующем: имеем написанную функцию на языке PostgreSQL. Необходимо перевести...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru