我有一个带有销售记录的 SQLite 表——在字段 13 中的运费价格——基本上有 3 种可能性:
价格:例如。£15.20 免费未指定
问题是并不总是只有这些词:例如。它可以说“运费为 15.20 英镑”或“免运费”——我需要将其标准化为上述可能性。我使用正则表达式:
def correct_shipping(db_data):
pattern=re.compile("\£(\d+.\d+)") #search for price
pattern_free=re.compile("free") #search for free shipping
pattern_not=re.compile("not specified") #search for shipping not specified
for every_line in db_data:
try:
found=pattern.search(every_line[13].replace(',','')).group(1)
except:
try:
found=pattern_free.search(every_line[13]).group()
except:
found=pattern_not.search(every_line[13]).group()
if found:
query="UPDATE MAINTABLE SET Shipping='"+found+"' WHERE Id="+str(every_line[0])
db_cursor.execute(query)
db_connection.commit()
但是这段代码引发了异常
AttributeError: 'NoneType' object has no attribute 'group'
——第一次以“5.20”形式触发它,因为没有找到任何模式。
问题是如何正确搜索字符串(是否需要 try/except