Python 运行查询时,Unicode相等比较无法将两个参数转换为Unicode
使用py2neo运行查询时出现问题:Python 运行查询时,Unicode相等比较无法将两个参数转换为Unicode,python,unicode,encode,py2neo,Python,Unicode,Encode,Py2neo,使用py2neo运行查询时出现问题: posts = graph.run( 'MATCH (p:Post) WHERE p.post CONTAINS \'' + keyword + '\' ' 'AND p.timestamp>' + str(startDate) + ' AND p.timestamp<' + str(endDate) + ' return p').data() pr
posts = graph.run(
'MATCH (p:Post) WHERE p.post CONTAINS \'' + keyword + '\' '
'AND p.timestamp>' + str(startDate) +
' AND p.timestamp<' + str(endDate) +
' return p').data()
print json.dumps(posts)
但它不打印任何内容这意味着两个字符串的编码不同。给出完整的堆栈跟踪可以更好地分析问题,但我猜解码
关键字
会有所帮助。不过,您需要先找出它是用什么编码的(如UTF-8、CP-1252、Mac Roman等)。我如何找到关键字的编码?那么,您从哪里/如何获得关键字?它是从磁盘上的文件中读取的、通过命令行输入的、通过HTTP发送的吗?不同的协议有不同的指定文本编码的方法。不幸的是,还有一种情况您必须猜测。@lenz我运行python脚本,其中我使用命令shell\u exec('python path/to/file$\u POST['data']2>&1')从php脚本运行graph.run(*)
。然后,在Pythoni中,首先使用sys.argv[1]
上的split函数,然后使用keyword=sys.argv[1].replace(“keyword:”,”)
来获取te var关键字
。在这种情况下,您需要了解PHP是如何处理这里的编码的(在shell\u exec
命令中)。也许它没有,只是把它得到的字节传递到某个地方;在这种情况下,你必须到达链条的后面。知道编码后,使用它来解码关键字
。或者只是tryUTF-8,因为Python会告诉您是否猜错了这个。也就是说:keyword=keyword.decode('utf8')
。
list(match("Post").where(post__contains=keyword, timestamp__gt=startDate, timestamp__lt=endDate))