列表索引超出范围,拆分正则表达式匹配

时间:2017-10-30 16:04:51

标签: python regex python-2.7

出于某种原因,我的代码的这一小部分给了我一个问题。我一直试图找出它为什么给我一个超出范围的列表索引"错误

#This works fine, and finds a match
if re.search("Manufacturer\/Distributor name:?", arg) != None:

    #---->This is giving me the problem, "List index out of range"<----
    address = arg.split("Manufacturer\/Distributor name:?", 1)[1]

这是我喂它的arg:

  

产品名称:Tio Nacho洗发水墨西哥草药推荐用途:洗发水制造商/分销商名称: Garcoa Laboratories,Inc。26135 Mureau Road Calabasas,CA 91302(818)225 - 0375 Emerg ency电话号码: CHEMTREC 1 - 800 - 424 - 9300 2。

当我将其设置为[1]时,结果如下:

List index out of range

当我将分割设置为[0]时,结果如下:

/Distributor name: Garcoa Laboratories, Inc. 26135 Mureau Road Calabasas, CA 91302 (818) 225 - 0375 Emerg ency telephone number: CHEMTREC 1 - 800 - 424 - 9300 2 .

我试图得到这个结果:

Garcoa Laboratories, Inc. 26135 Mureau Road Calabasas, CA 91302 (818) 225 - 0375 Emerg ency telephone number: CHEMTREC 1 - 800 - 424 - 9300 2 .

它与它的匹配,但由于某种原因分裂并不想工作。我错过了什么?为什么它给[0]

的结果

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

str.split()不会使用正则表达式,您需要使用re.split()

address = re.split(r'Manufacturer\/Distributor name:?', arg, 1)[1]

您还应养成使用正则字符串表示正则表达式的习惯,否则您需要转义\

答案 1 :(得分:2)

我假设arg是一个字符串。 string.split()不接受正则表达式作为分隔符。你可以阅读它here

相反,您应该使用arg.split("Manufacturer/Distributor name", 1)[1]