Error: _sre.SRE_Pattern is not iterable ,I am using re.compile() to get the strings by comparing begining values and getting this errror
Error: _sre.SRE_Pattern is not iterable ,I am using re.compile() to get the strings by comparing begining values and getting this errror
我在一个 icode 中有很多代码,但很多代码都以相同的数字开头
例如3435435353544,
3435435878993,
3435435453535....
我有 4 种类型,需要使用 if 子句
来定义它
我的代码
import numpy as np
import pandas as pd
import awswranger as wr
import re
pattern1=re.compile(r'^3233443446')
pattern2=re.compile(r'^3234444233')
pattern3=re.compile(r'^3242444233')
pattern4=re.compile(r'^7634726472')
def get_match_codes(icode):
try:
if icode in pattern3 or icode in pattern4:
stype='straight'
elif icode in pattern2 or icode in pattern1:
stype='late'
else:
stype="none"
return stype
except Exception as e:
return 'Error from get_match_codes' +str(e)
icode in pattern3
不进行正则表达式匹配 - 您发现运行时错误。
见https://docs.python.org/3/library/re.html?highlight=match#re.match
改为使用pattern3.match(icode)
或pattern3.search(icode)
也没有明显的需要try/except。
如果使用 re.match()
这仅匹配字符串的开头,根据文档,因此您不需要在 re.或者使用 re.search()
在字符串中的任何位置查找正则表达式。
所以你的代码变成:
import re
pattern1=re.compile(r'^3233443446')
pattern2=re.compile(r'^3234444233')
pattern3=re.compile(r'^3242444233')
pattern4=re.compile(r'^7634726472')
def get_match_codes(icode):
if pattern3.match(icode) or pattern4.match(icode):
stype='straight'
elif pattern2.match(icode) or pattern1.match(icode):
stype='late'
else:
stype="none"
return stype
print( get_match_codes("3233443446" ) )
输出:
late
此外,下次您提出问题时,请使您的代码最少(例如,没有不需要的导入)和可执行 - 包括对您的函数的调用和该调用的一些数据。这些都是为了让你自己对回答者友好 - 让读者尽可能容易地帮助你并希望提供答案是有礼貌的 - 所以让你的代码可以通过 copy/paste 执行而不添加任何东西 你也帮助 你自己.
我在一个 icode 中有很多代码,但很多代码都以相同的数字开头
例如3435435353544, 3435435878993, 3435435453535.... 我有 4 种类型,需要使用 if 子句
来定义它我的代码
import numpy as np
import pandas as pd
import awswranger as wr
import re
pattern1=re.compile(r'^3233443446')
pattern2=re.compile(r'^3234444233')
pattern3=re.compile(r'^3242444233')
pattern4=re.compile(r'^7634726472')
def get_match_codes(icode):
try:
if icode in pattern3 or icode in pattern4:
stype='straight'
elif icode in pattern2 or icode in pattern1:
stype='late'
else:
stype="none"
return stype
except Exception as e:
return 'Error from get_match_codes' +str(e)
icode in pattern3
不进行正则表达式匹配 - 您发现运行时错误。
见https://docs.python.org/3/library/re.html?highlight=match#re.match
改为使用pattern3.match(icode)
或pattern3.search(icode)
也没有明显的需要try/except。
如果使用 re.match()
这仅匹配字符串的开头,根据文档,因此您不需要在 re.或者使用 re.search()
在字符串中的任何位置查找正则表达式。
所以你的代码变成:
import re
pattern1=re.compile(r'^3233443446')
pattern2=re.compile(r'^3234444233')
pattern3=re.compile(r'^3242444233')
pattern4=re.compile(r'^7634726472')
def get_match_codes(icode):
if pattern3.match(icode) or pattern4.match(icode):
stype='straight'
elif pattern2.match(icode) or pattern1.match(icode):
stype='late'
else:
stype="none"
return stype
print( get_match_codes("3233443446" ) )
输出:
late
此外,下次您提出问题时,请使您的代码最少(例如,没有不需要的导入)和可执行 - 包括对您的函数的调用和该调用的一些数据。这些都是为了让你自己对回答者友好 - 让读者尽可能容易地帮助你并希望提供答案是有礼貌的 - 所以让你的代码可以通过 copy/paste 执行而不添加任何东西 你也帮助 你自己.