>>> s = ‘shiyanlou‘ >>> s[1:3] #这里呢,是左闭右开,是角标大于等于1并且小于3,就是1,2咯,所以是‘hi‘ ‘hi‘ >>> s[0:7:1] #这里呢,等于s[0:7],因为递增的值1是默认的,你也可以改 ‘shiyanl‘ >>> s[0:7:2] #递增2,看下结果,对上了吧 ‘sial‘ >>> s[-9:-3] #其实s是不仅仅是‘shiyanlou‘,更是‘shiyanloushiyanlou‘,中间的s角标是0,而0前面的就是负数了‘shiyan‘ >>> s[9:0:-1] #少了个s,不太好,因为右开,下标为0是不输出的 ‘uolnayih‘ >>> s[::-1] #这样就可以了,不填,默认全部咯,ok,完成了 ‘uolnayihs‘
最简单的实现思路是使用for 循环,申请同等大小的字符串,逆序赋值然后返回给服务器,但使用 Python 最方便的一点就是可以使用字符串的切片来实现逆序。
可运行的.py
def wechat_auth():
if request.method == ‘GET‘:
print ‘coming Get‘
data = request.args
token = ‘*****************‘
signature = data.get(‘signature‘,‘‘)
timestamp = data.get(‘timestamp‘,‘‘)
nonce = data.get(‘nonce‘,‘‘)
echostr = data.get(‘echostr‘,‘‘)
s = [timestamp,nonce,token]
s.sort()
s = ‘‘.join(s)
if (hashlib.sha1(s).hexdigest() == signature):
return make_response(echostr)
if request.method == ‘POST‘: #接收微信发来的文本消息,不是 GET 请求,而是 POST 请求,因此在 POST
处理流程中进行操作:
xml_str = request.stream.read()
xml = ET.fromstring(xml_str)
toUserName=xml.find(‘ToUserName‘).text
fromUserName = xml.find(‘FromUserName‘).text
createTime = xml.find(‘CreateTime‘).text
msgType = xml.find(‘MsgType‘).text
#一个正常的流程,先读取发信者收信者和写信时间,还有一个特重要的就是信的类型,微信支持文本、图片、视频、音频等...
#我们是回复文本信息,如果发来的不是文本信息,那我们就回复一句话提醒一下:
if msgType != ‘text‘: reply = ‘‘‘ <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml> ‘‘‘ % ( fromUserName, toUserName, createTime, ‘text‘, ‘Unknow Format, Please check out‘ ) return reply
#如果信息不是文本类,返回 Unknow Format, Please check out
。
#如果是文本呢,我们就继续操作,读取文本内容和文本信息的 ID,然后逆序,赋值,最后回复:
content = xml.find(‘Content‘).text msgId = xml.find(‘MsgId‘).text if type(content).__name__ == "unicode": content = content[::-1] content = content.encode(‘UTF-8‘) elif type(content).__name__ == "str": print type(content).__name__ content = content.decode(‘utf-8‘) content = content[::-1] reply = ‘‘‘ <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml> ‘‘‘ % (fromUserName, toUserName, createTime, msgType, content) return reply if __name__ == "__main__": app.run(host=‘0.0.0.0‘, port=8080)
时间: 2024-10-29 19:11:50