私の知識は非常に限られていますが、私は最善を尽くしています。複数の文字列に分割する
複数の文字列、変数で文字列を分割したいと考えています。
は今、私はhttpサーバのスクリプトを使用し、おかげ:私はちょうど少し変更したhttps://gist.github.com/bradmontgomery/2219997
は、私は、POST文字列のデコードを受け、私は別の文字列や変数にその文字列を分割したいです。
これは完全なコードです:
#!/usr/bin/env python
"""
Very simple HTTP server in python.
Usage::
./dummy-web-server.py [<port>]
Send a GET request::
curl http://localhost
Send a HEAD request::
curl -I http://localhost
Send a POST request::
curl -d "foo=bar&bin=baz" http://localhost
"""
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import SocketServer
import sys
import time
import csv
import urllib
import psycopg2
con = None
class S(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write("<html><body><h1>hi!</h1></body></html>")
def do_HEAD(self):
self._set_headers()
def do_POST(self):
# Doesn't do anything with posted data
content_length = int(self.headers['Content-Length']) # <--- Gets the size of data
post_data = self.rfile.read(content_length) # <--- Gets the data itself
print post_data # <-- Print post data
self._set_headers()
dataEncoded = str(post_data)
dataString = urllib.unquote(post_data)
timeString = str(time.strftime("%d %m %Y %H:%M:%S"))
with open("decoded_log.csv",'a') as resultFile:
wr = csv.writer(resultFile, dialect='excel')
wr.writerow([dataString,timeString])
with open("encoded_log.csv",'a') as resultFile:
wr = csv.writer(resultFile, dialect='excel')
wr.writerow([dataEncoded,timeString])
con = psycopg2.connect("host=localhost dbname=data_log user=USER password=PASSWORD")
print "DB Connection successful."
cur = con.cursor()
cur.execute("INSERT INTO log(data,date_time) VALUES (%s, %s)",(dataString,timeString))
con.commit()
def run(server_class=HTTPServer, handler_class=S, port=5400):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print 'Starting httpd...'
httpd.serve_forever()
if __name__ == "__main__":
from sys import argv
if len(argv) == 2:
run(port=int(argv[1]))
else:
run()
sys.exit()
が、私はこの文字列を受け取る:
%22%22%22%5B001%5D%22%22%3A%22%22C3643%22%22%2C%22%22%7C%5B002%5D%22%22%3A%22%2232303138%22%22%2C%22%22%7C%22%22%3D%22=
デコードです:だから
""""C3643""""32303138"",""|""="=
、どのようなI欲しい、私はハこれを行うに失敗しまし、C3643および32303138を抽出することである、そして私がで32303138を分割するようになる:だから
a = C3643 b = 32 c = 303 d = 138
:私はこの文字列を持っていると思いますので、一度、すべての行われている
32 303 138
、私はPostgreSQLの各値、各値に挿入することができます。
ありがとうございます!
感謝をMYGz!私が言及しなかったことの一つは、その文字列です。 S1 = ""」 "" "" C3643 "" "" 32303138 ""、 "" | "" = "= """ 最初の番号C3643は、このケースをINS可変長を持っていますが、意志最初の "" "" "" "" "内にあり、この場合の2番目の番号32303138では、これは同じ長さになります。最初の数字は完全に取ります。次の数字はそれをより多くの数に分割します。 – Bannedillo
これらの '' 'をエスケープする必要があります。悪いことに、幸運にも偶数個の' ''があったので、連鎖しています。 – MYGz
私に1秒を与える。私はそれを是正します – MYGz