 |

13.08.2019, 18:36
|
|
Участник форума
Регистрация: 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
|
|
|

13.08.2019, 19:03
|
|
Участник форума
Регистрация: 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)
|
|
|

13.08.2019, 19:15
|
|
Участник форума
Регистрация: 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)
Сделал, но опять какая-то ерунда с прохождениями по строчкам документа

|
|
|

13.08.2019, 19:26
|
|
Участник форума
Регистрация: 10.07.2018
Сообщений: 143
С нами:
4128555
Репутация:
68
|
|
Проблемы с кодировкой. Ты вопросы / ответы через блокнот писал? Или как? Скинь хоть 1 строку, попробую что-нибудь сделать
|
|
|

13.08.2019, 19:30
|
|
Участник форума
Регистрация: 27.06.2018
Сообщений: 140
С нами:
4147554
Репутация:
68
|
|
Держи.

|
|
|

13.08.2019, 20:00
|
|
Участник форума
Регистрация: 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)
|
|
|

13.08.2019, 21:49
|
|
Новичок
Регистрация: 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)
|
|
|
|