Python正则表达式将两行合并为一行

时间:2015-07-16 02:22:45

标签: python regex

我正在从网页抓取信息,我试图将两行输出组合成一行。我一直试图通过正则表达式模式来做到这一点,虽然我不确定是否可以这样做,或者是否有更好的方式。原始输出是:

Season Dates: Nov 21
2014 to Apr 19

以及上面和下面的其他行,我想将它们保持为单独的行。

我想回到这两行:

Season Dates: Nov 21 2014 to Apr 19

我试过了:

result2 = re.sub("(Season\sDates:\s[JFMAJASOND][aepuoc][nbrpylgcv]\s[0-9]?[0-9])", '\12[0-9][0-9][0-9]\sto\s[JFMAJASOND][aepuoc][nbrpylgcv]\s[0-9]?[0-9]', result)

我得到的输出是:

[0-9][0-9][0-9]\sto\s[JFMAJASOND][aepuoc][nbrpylgcv]\s[0-9]?[0-9]

我尝试了多种其他变体,包括将正则表达式分配给变量等,但无法正常工作。

从我在网上找到的内容来看,我不确定替换值是否可以是正则表达式,但我还不清楚。这是通过正则表达式实现的,还是有更好的方法呢?

2 个答案:

答案 0 :(得分:0)

试试这个:

r=re.compile('(Season\sDates):\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dev)\s(\d+)\s*$\s*(\d+)\s+to\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dev)\s+(\d+)',re.MULTILINE)
p="""Season Dates: Nov 21
2014 to Apr 19"""
r.sub('\g<1>: \g<2> \g<3> \g<4> to \g<5> \g<6>',p)

如果需要,您可以捕获:to或将一些组合在一起。如果您需要更多或不同的东西,请告诉我。

答案 1 :(得分:0)

re.sub(r"\n"," ",test_str)

如果它是一个如此简单的用例,你可以简单地这样做。参见演示。

https://regex101.com/r/fX3oF6/1

编辑:

如果有超过2行使用

 (\bSeason\s+Dates:\s*\S+\s+\d+)\n(\d+\s+to\s+\S+\s+\d+)

替换为\1 \2。请参阅演示。

https://regex101.com/r/fX3oF6/7