ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Python | Хелпа с кодом (https://forum.antichat.xyz/showthread.php?t=1339649)

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

Цитата:

Сообщение от 0xNull_Dll

split пробовал?

Код:





Код:

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

questions = []
answers = []

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



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

https://forum.antichat.xyz/attachmen...7b04d85f85.png

0xNull_Dll 13.08.2019 19:26

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

Lyonya Decart 13.08.2019 19:30

Держи.

https://forum.antichat.xyz/attachmen...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

Цитата:

Сообщение от 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
]
)



Время: 18:57