我有这段代码
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的作业
正则表达式也正在剥离212
数字。我该如何解决?
答案 0 :(得分:1)
问题是这个正则表达式留下了它找到的第一个空格,并且只删除了后续的空格。
这意味着
u'\r\n 212\r\n jobs containing php in xxxx \r\n '
变为
u'\r212\rjobs containing php in xxxx '
打印时,将打印212
,然后回车会将光标返回到第一列,以便以下jobs...
覆盖212
。< / p>
这提出了两个问题:
\r\n
会被标准化为\n
s) - 为什么?修改强>
所以,根据你的评论,你想要
然后使用
cleaned_mydata = re.sub(r'\s+', ' ', mydata[0].strip())