正则表达式不能正确使用python
我有这个密码正则表达式不能正确使用python,python,regex,Python,Regex,我有这个密码 site = hxs.select("//h1[@class='state']") mydata = site.select("string()").extract() cleaned_mydata = re.sub(ur'(\s)\s+', ur'\1', mydata[0], flags=re.MULTILINE + re.UNICODE) log.msg(str(mydata),level=log.ERROR) log.msg(str(cle
site = hxs.select("//h1[@class='state']")
mydata = site.select("string()").extract()
cleaned_mydata = re.sub(ur'(\s)\s+', ur'\1', mydata[0], flags=re.MULTILINE + re.UNICODE)
log.msg(str(mydata),level=log.ERROR)
log.msg(str(cleaned_mydata),level=log.ERROR)
第一个输出是
错误:[u'\r\n 212\r\n xxxx中包含php的作业
\r\n']
其他输出是
xxxxxx中包含php的作业
regex也在用它剥离
212
数值。我如何解决这个问题呢?问题是这个正则表达式会留下它找到的第一个空格,并只去掉后面的空格
这意味着
u'\r\n 212\r\n jobs containing php in xxxx \r\n '
变成
u'\r212\rjobs containing php in xxxx '
打印时,将打印212
,然后回车符将光标返回到第一列,以便以下作业…
将覆盖212
这提出了两个问题:
- 您似乎正在以二进制模式读取文本文件(否则
将被规范化为\r\n
s)-为什么\n
- 你真的希望正则表达式这样工作吗
- 完全去除前导和尾随空格
- 将多个连续的空白字符压缩为单个空格(ASCII 32)
cleaned_mydata = re.sub(r'\s+', ' ', mydata[0].strip())
您试图匹配什么?我试图删除多个空格和结束行。我从互联网上复制了这个,我不知道它到底做了什么作为一个测试,为什么不用可见的东西代替它,而不是:ur'\1',使用'XYZ'。在运行正则表达式之前,为什么不删除\r\n?另外,当使用flags=它们应该在一起,而不是添加(即使用| not+)时,我正在用scrapy废弃网站并在那里使用。我不知道为什么会这样。我只想删除blamk空格和\r\n\n@user32:请更具体一点。你到底想删除什么?我认为您不希望结果是包含phpinxxxx的
212jobs
。我希望结果是212个包含xxx中php的jobs