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

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

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

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

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

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

Помогите пожалуйста, не знаю как это сделать(
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2019, 14:17
Ответы с готовыми решениями:

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

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

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

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

11
1272 / 660 / 362
Регистрация: 07.01.2019
Сообщений: 2,174
07.01.2019, 14:46 2
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  [ТС] 3
Спасибо, все работает, но я не дописал ТЗ, так как думал, что нет никакой разницы, но оно не работает так(
Мне нужно менять текст в строках типа:

{"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,"data":{},"username":"Ан дрей","message":"Интересно","role":""}
]}

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

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  [ТС] 5
Не работает и выдает ошибку, может я что-то не так делаю? Снимок ошибки прикрепил во вложении
0
Миниатюры
Программа для замены текста из одной базы на рандомные значения из другой  
1272 / 660 / 362
Регистрация: 07.01.2019
Сообщений: 2,174
07.01.2019, 16:09 6
Это проблема с кодировкой

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  [ТС] 7
По прежнему то же самое((((((
0
Миниатюры
Программа для замены текста из одной базы на рандомные значения из другой  
1272 / 660 / 362
Регистрация: 07.01.2019
Сообщений: 2,174
07.01.2019, 16:21 8
Прикрепи файл, что-то с кодировкой
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 8
07.01.2019, 16:23  [ТС] 9
Вот весь пакет
0
Вложения
Тип файла: zip пакет.zip (38.7 Кб, 4 просмотров)
Эксперт Python
4961 / 3517 / 1122
Регистрация: 28.10.2013
Сообщений: 8,946
Записей в блоге: 1
07.01.2019, 16:26 10
Цитата Сообщение от filipkof Посмотреть сообщение
По прежнему то же самое((((((
Файл сохрани в UTF-8 без BOM. И впредь делай так всегда.
1
1272 / 660 / 362
Регистрация: 07.01.2019
Сообщений: 2,174
07.01.2019, 16:33 11
Лучший ответ Сообщение было отмечено 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  [ТС] 12
Все работает, круто, спасибо тебе бро)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2019, 16:56

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

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

Составить нетипизированный метод замены одной строковой конструкции другой
Составить нетипизированный метод замены одной строковой конструкции другой. Метод должен работать...

Заменить метод ReadAllLines на другой доступный в целях замены в файле одной из строк
Пишу программу под Windows mobile на C#, необходимо перезаписать текст в нужную строку TXT файла....

Поиск значения из одной книги в другой и вставка этого значения
Привет форумчане. Требуется ваша помощь. Мне из книги "Разобрано" нужно найти в "Справочнике"...

Программа замены текста из файла
Помогите создать программу, работающую по такому принципу: Я ввожу текст к 1 файл (там много строк...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.