PDA

Просмотр полной версии : Python | Хелпа с кодом


Lyonya Decart
13.08.2019, 18:36
Пишу бота для ВК на 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

0xNull_Dll
13.08.2019, 19:03
split пробовал?

Код:






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

questions = []
answers = []

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

Lyonya Decart
13.08.2019, 19:15
split пробовал?

Код:






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

questions = []
answers = []

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





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

https://forum.antichat.xyz/attachments/27384094/img_7b04d85f85.png

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

Lyonya Decart
13.08.2019, 19:30
Держи.

https://forum.antichat.xyz/attachments/27384105/img_09f38ced40.png

0xNull_Dll
13.08.2019, 20:00
Короче, как я и думал, проблема с кодировкой.

Во-первых:

Зайди в этот же текстовый документ, жмякни "Файл -> сохранить как -> снизу будет надпись (у меня 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)

es3n1n)
13.08.2019, 21:49
Сделал, но опять какая-то ерунда с прохождениями по строчкам документа


а?

shitcode:






database
=
open
(
'твоя база'
,
'r'
)
questions
=
[
]
answers
=
[
]
for
line
in
database
.
read
(
)
.
splitlines
(
)
:
pArr
=
line
.
split
(
'\\'
)
questions
.
append
(
pArr
[
0
]
)
answers
.
append
(
pArr
[
1
]
)