Проблема с кириллицей при передаче аргумента из PHP

ilyagaiduk2

Новичок
Пользователь
Апр 8, 2021
5
0
1
Добрый вечер! Сегодня написал свой первый скрипт на питоне. В сценарии PHP приходит переменная, которая содержит любое слово или словосочетание на инглише или русском. Я запускаю скрипт python и в качестве аргумента передаю эту переменную. Столкнулся с проблемой обработки значения переменной в скрипте питона sys.argv[1]. Скрипт возращает в php NULL, если в переменной слово на кириллице или содержит пробелы. Подскажите, пожалуйста, как решить эту проблему?
Код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fileencoding=utf-8
import sys; sys.stdout.encoding
import locale; locale.getpreferredencoding(False)
locale.getdefaultlocale()[1]
import os
print(os.environ)
import codecs
import pymorphy2
morph = pymorphy2.MorphAnalyzer()
slovo = sys.argv[1]
razbor = slovo.split(' ')
len = len(razbor)
list = []
if len == 1:
    word = morph.parse(slovo)[0].normal_form
    print(word)
else:
    for number in razbor:
        word = morph.parse(number)[0].normal_form
        list.append(word)
    print(list)
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 567
454
83
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 567
454
83
Добрый вечер! Сегодня написал свой первый скрипт на питоне. В сценарии PHP приходит переменная, которая содержит любое слово или словосочетание на инглише или русском. Я запускаю скрипт python и в качестве аргумента передаю эту переменную. Столкнулся с проблемой обработки значения переменной в скрипте питона sys.argv[1]. Скрипт возращает в php NULL, если в переменной слово на кириллице или содержит пробелы. Подскажите, пожалуйста, как решить эту проблему?
Код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fileencoding=utf-8
import sys; sys.stdout.encoding
import locale; locale.getpreferredencoding(False)
locale.getdefaultlocale()[1]
import os
print(os.environ)
import codecs
import pymorphy2
morph = pymorphy2.MorphAnalyzer()
slovo = sys.argv[1]
razbor = slovo.split(' ')
len = len(razbor)
list = []
if len == 1:
    word = morph.parse(slovo)[0].normal_form
    print(word)
else:
    for number in razbor:
        word = morph.parse(number)[0].normal_form
        list.append(word)
    print(list)
вы передаете переменную (слово) из пхп?
или вы просто при запуске скрипта в ключах указываете это слово (переменную)?
и какую проблему надо решить? чтобы обрабатывал все слова и словосочетания? и что нужно получить в результате обработки?
 

ilyagaiduk2

Новичок
Пользователь
Апр 8, 2021
5
0
1
$command = shell_exec("python /var/www/vhosts/pathpython/word.py \"$query2\""); //приводим к нормальной форме
передаваться может слово или фраза на русском или инглише. Если на инглише передается, то скрипт работает нормально. а если русский, то выдает NULL
var_dump($command);
вы передаете переменную (слово) из пхп?
или вы просто при запуске скрипта в ключах указываете это слово (переменную)?
и какую проблему надо решить? чтобы обрабатывал все слова и словосочетания? и что нужно получить в результате обработки?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 567
454
83
ваш скрипт хоть и плохо написан, но он работает...
я запустил с русскими словами и пробелами, и он все показал... (если есть пробелы, нужны кавычки)
у вас проблема в пхп...
 

ilyagaiduk2

Новичок
Пользователь
Апр 8, 2021
5
0
1
ваш скрипт хоть и плохо написан, но он работает...
я запустил с русскими словами и пробелами, и он все показал... (если есть пробелы, нужны кавычки)
у вас проблема в пхп...
Работает только со словами на английском или русском тоже? Подскажите пожалуйста, в чем может быть проблема на стороне PHP?
 

ilyagaiduk2

Новичок
Пользователь
Апр 8, 2021
5
0
1
ваш скрипт хоть и плохо написан, но он работает...
я запустил с русскими словами и пробелами, и он все показал... (если есть пробелы, нужны кавычки)
у вас проблема в пхп...
Если просто вставить вместо
sys.argv[1] строку с русским текстом, то у меня тоже работает, а вот при передаче значения переменной из PHP - не работает.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 567
454
83
Если просто вставить вместо
sys.argv[1] строку с русским текстом
ну значит проблема в типах данных, в формате данных, посмотрите что он передает...
пхп не знаю, к сожалению...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 567
454
83
Работает только со словами на английском или русском тоже? Подскажите пожалуйста, в чем может быть проблема на стороне PHP?
возможно что ваш скрипт на питоне ничего не возвращает, он просто печатает в консоли...
 

ilyagaiduk2

Новичок
Пользователь
Апр 8, 2021
5
0
1
ну значит проблема в типах данных, в формате данных, посмотрите что он передает...
пхп не знаю, к сожалению...
Проблема с русским языком на стороне питона
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 567
454
83
понятно...
 

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