私は小さな python スクリプトをテストしており、その一部をより大きなスクリプトで使用します。基本的に、CSV ファイル (正規表現を含む) のフィールドを検索し、これを正規表現テストで使用しようとしています。その理由は (非常に奇妙なユースケースの一部) であり、スクリプトの代わりに CSV ファイルのメンテナンスが容易になります。私が次のことで欠けているものはありますか....
test.csv:
field0,field1,field2
foo,bar,"\d+\.\d+"
bar,foo,"\w+"
test.py (extraprint
はテストに使用されます):
import sys
import re
import csv
input = sys.argv[1]
print input
reader = csv.reader(open('test.csv','rb'), delimiter=',', quotechar="\"")
for row in reader:
print row
value = row[0]
print value
if value in input:
regex = row[2]
print regex
pat = re.compile(regex)
test = re.match(pat,input)
out = test.group(1)
print out
" " のような値をスクリプトに渡すと、含まれているものを取得し、正規表現を使用してを抽出するfoo blah 38902462986.328946239846
ことが期待されます。ただし、スクリプトを実行すると、次のようになります。foo
\d+\.\d+
38902462986.328946239846
foo blah 0920390239.90239029
['field0', 'field1', 'field2']
field0
['foo', 'bar', '\\d+\\.\\d+']
foo
\d+\.\d+
Traceback (most recent call last):
File "reg.py", line 19, in <module>
out = test.group(1)
AttributeError: 'NoneType' object has no attribute 'group'
本当に何が起こっているのかわからない。
PS Python は大きな世界であり、まだ学習中です。