Проблемы с выводом результата функции; CGI скрипт с библиотекой NLTK

Morgot and sauron

Новичок
Пользователь
Апр 27, 2022
6
0
1
Здорова всем. Я хочу токенизировать(nltk.word_tokenize) и вывести полученный из WEB текст, но скрипт либо выдаёт ошибку, либо пустой экран. Что я делаю не так?
Вот код:
#!C:\Users\HP\AppData\Local\Programs\Python\Python310-32\python.exe


import os
import urllib.parse
import nltk
query_dict = urllib.parse.parse_qs(os.environ)
def tknz_wrd(someamountoftext):
return(nltk.word_tokenize(someamountoftext))


print(“Content-Type: text/html\n”)
print (tknz_wrd(someamountoftext))

Если написать print (tknz_wrd(someamountoftext)) то выдаст ошибку(потому что такой переменной нет, но она же не нужна, верно? Я хочу принимать данные из WEB, а не токенизировать статическую стрингу), а если написать print (tknz_wrd) выйдет пустое окно браузера. Кто знает, в чём проблема?
Мне ОЧЕНЬ надо заставить работать функцию def tknz_wrd() в этом CGI скрипте!

Я использую: Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/7.4.28
python 3.10.4
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
Если написать print (tknz_wrd(someamountoftext)) то выдаст ошибку(потому что такой переменной нет, но она же не нужна, верно?
нет не верно, someamountoftext - это аргумент функции, в вашем случае он обязателен

Мне ОЧЕНЬ надо заставить работать функцию def tknz_wrd() в этом CGI скрипте!
ну вставьте в функцию tknz_wrd полученный из WEB текст вместо someamountoftext...
то есть не print (tknz_wrd(someamountoftext)), а print (tknz_wrd(<полученный из WEB текст>))
 

Morgot and sauron

Новичок
Пользователь
Апр 27, 2022
6
0
1
Чувак, someamountoftext - переменная, которая И ДОЛЖНА БЫТЬ <полученный из WEB текст>: http................moyscript.py?someamountoftext=nekotoriy%text.
(tknz_wrd(someamountoftext)) - так будет ошибка выскакивать. Поставлю статическую someamountoftext = "фпвыыф" будет работать, но только этот "фпвыыф" мне к чёрту не нужен.
Где-то глубже собака зарыта......
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
ну так получите текст, я не понимаю в чем ваша проблема...
вы должны определить someamountoftext перед тем, как вставить ее как аргумент функции...

http................moyscript.py?
что это?

someamountoftext=nekotoriy%text.
а это?

пока вы нормально не объясните, вам вряд ли кто то поможет...
 

Morgot and sauron

Новичок
Пользователь
Апр 27, 2022
6
0
1
Моя проблема в том, что я НЕ могу всучить текст к функции для обработки.

http................moyscript.py? - сильно сокращённый вариант http://localhost/speciallocationforproject/local/tokenize/morgot.py?someamountoftext=какойтотекст
Так работает ручной ввод CGI. someamountoftext=nekotoriy%text. - это даётся значение для этой переменной. % - пробел в браузерной строке.
"вы должны определить someamountoftext перед тем, как вставить ее как аргумент функции" Статическая переменная мне НЕ нужна. А перезаписываться вручную она не будет.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
Статическая переменная мне НЕ нужна
вы сами то себя понимаете? любая переменная статическая (как я понял, статическая вы имеете ввиду, что вы задали сами ей значение), так как в ней храниться какая то информация....

получается вам нужно из url взять текст...
что находиться в morgot.py ? вы используете какой то фреймворк?

почему я должен вытаскивать из вас эту информацию?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
я бессилен...
может кто то другой осилит ваш поток сознания...
 

Morgot and sauron

Новичок
Пользователь
Апр 27, 2022
6
0
1
В morgot.py находится следующее:
#!C:\Users\HP\AppData\Local\Programs\Python\Python310-32\python.exe


import os
import urllib.parse
import nltk
query_dict = urllib.parse.parse_qs(os.environ)
def tknz_wrd(someamountoftext):
return(nltk.word_tokenize(someamountoftext))


print(“Content-Type: text/html\n”)
print (tknz_wrd(someamountoftext))


Всё. Больше ничего. Насчёт статики имеется ввиду:
someamountoftext = "Написать сюда что-то"
Если я вставлю вышенаписанную строчку в код, то результат будет:
"Написать" "сюда" "что-то"
И это НЕ поменяется посредством http://localhost/speciallocationforproject/local/tokenize/morgot.py?someamountoftext=какойтотекст
 

Morgot and sauron

Новичок
Пользователь
Апр 27, 2022
6
0
1
Так. Я решил проблему. Вот правильный код:

#!C:\Users\HP\AppData\Local\Programs\Python\Python310-32\python.exe


import os
import urllib.parse
import nltk

query_dict = urllib.parse.parse_qs(os.environ)
input_something = str(query_dict)
def tknz_wrd(someamountoftext):
return(nltk.word_tokenize(someamountoftext))


print(“Content-Type: text/html\n”)

print (tknz_wrd(input_something))

Ручной ввод в строке браузера:
http://localhost/speciallocation/local/tokenize/morgot.py?someamountoftext=Enter your text here

Вывод: ['Enter', 'your', 'text', 'here']
 

Форум IT Специалистов