Skip to main content
 首页 » 编程设计

python之正则表达式不能与 python 一起正常工作

2025年05月04日22tintown

我有这个代码

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) 

第一个输出是

ERROR: [u'\r\n 212\r\n jobs containing php in xxxx \r\n ']

其他输出是

jobs containing php in xxxxxx

regex 也去除了 212 数字。我该如何解决这个问题

请您参考如下方法:

问题是这个正则表达式会留下它找到的第一个空格,而只去除后续的空格。

这意味着

u'\r\n 212\r\n jobs containing php in xxxx \r\n ' 

成为

u'\r212\rjobs containing php in xxxx ' 

打印时,212 将被打印,然后回车会将光标返回到第一列,以便后面的 jobs... 将覆盖 212。

这提出了两个问题:

  • 您似乎正在以二进制模式读取文本文件(否则 \r\n 会被规范化为 \n)- 为什么?
  • 您真的希望正则表达式以这种方式工作吗?

编辑:

所以,根据你的评论,你想要

  • 完全去除前导和尾随空格
  • 将多个连续的空白字符压缩成一个空格 (ASCII 32)。

然后使用

cleaned_mydata = re.sub(r'\s+', ' ', mydata[0].strip())