我已经使用Nodejs为对话框创建了一个webhook。
现在,我需要调用一个Python文件来总结文本。对于此操作,我使用python。作为一个论点,我增加了我想要缩短的文本。
问题是,例如,除了"v roce“之外,正确地发送了有关缺陷编制的文本。Python将以"v\xa0roce".的形式接收它剩下的课文没问题。其他文本可能存在不止一个这样的问题。
我试图用与命令行中的参数相同的文本调用Python,但没有出现这个问题。
Nodejs中的代码示例
var options = {
mode: 'text',
args: result
};
await PythonShell.run('summary.py', options, function (err, results) {
if(err){
console.log(err);
callback(result);
}
// results is an array consisting of messages collected during execution
else{
result = results.toString();
let output = {
fulfillmentText: result,
outputContexts: []
};
result = JSON.stringify(output);
callback(result);
}
});
如果我在Python代码的开头调用print (sys.argv [1])
,我会得到以下内容
P诉roce 1618,kdy nespokojeníprotestanštístodr z okna dva královskémístodržícía k tomutočinu sepsaliáhlou。
这看起来不错,但做完这件事后
article = filedata.split(". ")
sentences = []
for sentence in article:
sentences.append(sentence.replace("[^a-zA-Z]", " ").split(" "))
sentences.pop()
print(sentences)
return sentences
以下内容将返回
"['Defenestrace‘、'označuje’、'násilné‘、'vyhození’、'z‘、'okna’、'Původ‘、'slova’、'je‘、'odvozován’、'od‘、'pražské’、'defenestrace‘、'v\xa0roce','1618、'kdy’、'nespokojení‘、'protestanští’、'stavové‘、'vyhodili’、'z‘、'okna’、'dva‘、’dva‘、’královsk ',“aístodržící“、a‘、k’、'činu‘、'sepsali’、'obsáhlou‘、’道歉‘、'Ovšem’、've‘、'středověku’、'a‘、'v’、'raném‘、'novověku’、'se‘、'defenestrace’、'konaly‘、’poměrně‘,’často‘、'a’、'toto‘、'konání’、'neslo‘、'prvky',‘lenče ','ordálu','a','společně','spáchané','vraždy','Ve','středověké','a','raně','novověké','společnosti,','která','je',’v拉赞ě',‘horizontálně’,‘členěna,'má','defenestrace','charakter',’符号‘,'trestu']“
我使用generate_summary(sys.argv[1], 2)
调用这个Python代码。
如果我输入"TEXT ABOUT Defene体外“而不是sys.argv[1]
,则不会出现此问题,并显示为"v roce”。
有人能帮我吗?
提前谢谢你
发布于 2020-01-19 10:29:00
替换中不支持正则表达式,您需要使用回复模块,如下所示:
re.sub("[^a-zA-Z]", " ", your_string)
然后把结果分成几个字。
https://stackoverflow.com/questions/59809120
复制相似问题