HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.08.2019, 18:36
Lyonya Decart
Участник форума
Регистрация: 27.06.2018
Сообщений: 140
С нами: 4147554

Репутация: 68
По умолчанию

Пишу бота для ВК на python, но я не очень силён в синтаксисе. Я написал код, но он не хочет работать )) У меня есть документ, в котором есть сообщения и ответы на них (они разделяются знаком '\'). Нужно, чтобы скрипт открывал этот документ и каждую строчку добавлял в массив1.

Новое сообщение бота ВК поступает в отдельную функцию. Перед этим я обьявляю массив2 При новом сообщение скрипт должен пройтись по массиву1, извлечь весь текст каждого элемента массива до знака-разделителя('\'). И сделать проверку: if извлеченный текст in новое сообщение: Извлечь весь текст этого же элемента массива, но после знака-разделителя('\') и добавить этот текст в массив2 После этого нужно выбрать рандомный элемент из массива2 и отправить его в ВК. Над отправкой в ВК можете не париться, это уже готово.

Python:





Код:
f
=
open
(
'answer_databse.txt'
,
'r'
)
om
=
0
omg
=
[
]
for
line
in
f
:
om
=
om
+
1
omg
[
om
]
=
line
def
onNewMsg
(
text
,
user
)
:
ddd
=
{
}
dada
=
0
for
item
in
omg
:
result
=
re
.
match
(
r'(.+)\\'
,
item
)
if
result
in
text
:
dada
=
dada
+
1
ddd
[
dada
]
=
re
.
match
(
r'\\(.+)'
,
item
)
ada
=
0
for
item
in
ddd
:
ada
=
ada
+
1
txt
=
ddd
[
random
.
uniform
(
1
,
ada
)
]
write_msg
(
user
,
txt
,
random
.
uniform
(
10300130
,
20300130
)
)
return
 
Ответить с цитированием

  #2  
Старый 13.08.2019, 19:03
0xNull_Dll
Участник форума
Регистрация: 10.07.2018
Сообщений: 143
С нами: 4128555

Репутация: 68
По умолчанию

split пробовал?

Код:





Код:
database = open('твоя база', 'r')

questions = []
answers = []

for line in database:
    q, a = line.split('/')
    questions.append(q)
    answers.append(a)
 
Ответить с цитированием

  #3  
Старый 13.08.2019, 19:15
Lyonya Decart
Участник форума
Регистрация: 27.06.2018
Сообщений: 140
С нами: 4147554

Репутация: 68
По умолчанию

Цитата:
Сообщение от 0xNull_Dll  

split пробовал?

Код:





Код:
database = open('твоя база', 'r')

questions = []
answers = []

for line in database:
    q, a = line.split('/')
    questions.append(q)
    answers.append(a)

Сделал, но опять какая-то ерунда с прохождениями по строчкам документа

 
Ответить с цитированием

  #4  
Старый 13.08.2019, 19:26
0xNull_Dll
Участник форума
Регистрация: 10.07.2018
Сообщений: 143
С нами: 4128555

Репутация: 68
По умолчанию

Проблемы с кодировкой. Ты вопросы / ответы через блокнот писал? Или как? Скинь хоть 1 строку, попробую что-нибудь сделать
 
Ответить с цитированием

  #5  
Старый 13.08.2019, 19:30
Lyonya Decart
Участник форума
Регистрация: 27.06.2018
Сообщений: 140
С нами: 4147554

Репутация: 68
По умолчанию

Держи.

 
Ответить с цитированием

  #6  
Старый 13.08.2019, 20:00
0xNull_Dll
Участник форума
Регистрация: 10.07.2018
Сообщений: 143
С нами: 4128555

Репутация: 68
По умолчанию

Короче, как я и думал, проблема с кодировкой.

Во-первых:

Зайди в этот же текстовый документ, жмякни "Файл -> сохранить как -> снизу будет надпись (у меня encoding, на русской винде будет что-то типа кодировка) -> поставь там ANSI и сохрани с заменой

Во-вторых, тестил на вот этом коде, работает:

Код:





Код:
import numpy as np

files = open('C:/Users/PC/Desktop/answer_databse.txt', 'r+')

f1 = files.readlines()

for line in f1:

    line = line.split('\\')

    line = np.array(line)
   
    q = line[0]

    a = line[1]

    print(q, a)
 
Ответить с цитированием

  #7  
Старый 13.08.2019, 21:49
es3n1n)
Новичок
Регистрация: 26.07.2019
Сообщений: 18
С нами: 3580925

Репутация: 13
По умолчанию

Цитата:
Сообщение от Lyonya Decart  

Сделал, но опять какая-то ерунда с прохождениями по строчкам документа
а?

shitcode:





Код:
database
=
open
(
'твоя база'
,
'r'
)
questions
=
[
]
answers
=
[
]
for
line
in
database
.
read
(
)
.
splitlines
(
)
:
pArr
=
line
.
split
(
'\\'
)
questions
.
append
(
pArr
[
0
]
)
answers
.
append
(
pArr
[
1
]
)
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.