出于某种原因,我的代码的这一小部分给了我一个问题。我一直试图找出它为什么给我一个超出范围的列表索引"错误
#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]
的结果感谢您的帮助!
答案 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]
。