这似乎是一个非常明显的错误,我现在已经尝试解决了近一个小时。 :(
this.driverServiceProcess.StartInfo.LoadUserProfile = true;
我试图只抓取数字,连字符和+符号。基本上删除所有lst = ['\xa0\xa0+11-9188882266\xa0\xa0+01-9736475634 ','\xa0\xa0+11-9177772266\xa0\xa0+01-9736475234']
。
我认为\xa0
是正确的方法。尝试过但失败了:
Regex
追踪(最近一次通话): 文件"",第1行,in 文件" C:\ Python34 \ lib \ re.py",第160行,匹配 return _compile(pattern,flags).match(string) 文件" C:\ Python34 \ lib \ re.py",第282行,在_compile中 p,loc = _cache [type(pattern),pattern,flags] TypeError:不可用类型:' list'
我用mRegex = (['+0-9-'])
lst = re.match(mRegex,lst)
再尝试了几次,然后切换到regex
:
replace
它对h.replace(r"\xa0","")
没有任何作用。保持不变。
当我执行lst
时,我得到的len(lst[0])
非常奇怪。
在a:
33
输出不显示for i in lst[0]:
print(i)
。
我在这里完全糊涂了。
答案 0 :(得分:6)
首先,您不能在列表中应用替换/正则表达式。您必须为每个字符串应用它们,并使用列表推导来重建清理列表。
第二,当你替换你使用 raw 前缀时,你不应该使用它,因为它按字面意思处理\x
,而不是你想要的。
我会这样做:
lst = [x.replace("\xa0","") for x in lst]
结果:
['+11-9188882266+01-9736475634 ', '+11-9177772266+01-9736475234']
和BTW:mRegex = (['+0-9-'])
不起作用,因为你基本上定义了1个字符串的列表。你可能意味着mRegex = '([0-9\-+])'
正则表达式的解决方案是:
lst = [re.sub(r"[^\d+\-]","",x) for x in lst]
(删除与char类不匹配的字符,\d
(大致)等同于0-9
)