Python で正規表現を記述しようとしていますが、それに含まれる文字の 1 つは \001 文字です。\001 を文字列に入れてもうまくいかないようです。'string' + str(chr(1)) も試しましたが、正規表現はそれをキャッチしていないようです。神様の愛のために誰か助けてください、私は一日中これに苦しんでいます。
import sys
import postgresql
import re
if len(sys.argv) != 2:
print("usage: FixToDb <fix log file>")
else:
f = open(sys.argv[1], 'r')
timeExp = re.compile(r'(\d{2}):(\d{2}):(\d{2})\.(\d{6}) (\S)')
tagExp = re.compile('(\\d+)=(\\S*)\001')
for line in f:
#parse the time
m = timeExp.match(line)
print(m.group(1) + ':' + m.group(2) + ':' + m.group(3) + '.' + m.group(4) + ' ' + m.group(5));
tagPairs = re.findall('\\d+=\\S*\001', line)
for t in tagPairs:
tagPairMatch = tagExp.match(t)
print ("tag = " + tagPairMatch.group(1) + ", value = " + tagPairMatch.group(2))
これは入力の例です。読みやすくするために「\001」文字を「~」に置き換えました
15:32:36.357227 R 1 0 0 0 8=FIX.4.2~9=0067~35=A~52=20120713-19:32:36~34=1~49=PD~56=P~98=0~ 108=30~10=134
出力:
15:32:36.357227 R タグ = 8、値 = FIX.4.29=006735=A52=20120713-19:32:3634=149=PD56=P98=0108=3010=134
したがって、「\001」文字で停止しません。