我只是在测试一个小的 python 脚本,我将在更大的脚本中使用它的一部分。基本上我正在尝试在 CSV 文件中查找一个字段(其中包含一个正则表达式),并在正则表达式测试中使用它。原因是(一个非常奇怪的用例的一部分)并且可以更轻松地维护 CSV 文件而不是脚本。以下是我缺少的东西....
测试.csv:
field0,field1,field2
foo,bar,"\d+\.\d+"
bar,foo,"\w+"
test.py (额外print
用于测试):
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 是一个很大的世界,还在学习中。