Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式不能正确使用python_Python_Regex - Fatal编程技术网

正则表达式不能正确使用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
    将被规范化为
    \n
    s)-为什么
  • 你真的希望正则表达式这样工作吗
编辑:

那么,根据你的评论,你想

  • 完全去除前导和尾随空格
  • 将多个连续的空白字符压缩为单个空格(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