我正在从网页抓取信息,我试图将两行输出组合成一行。我一直试图通过正则表达式模式来做到这一点,虽然我不确定是否可以这样做,或者是否有更好的方式。原始输出是:
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]
我尝试了多种其他变体,包括将正则表达式分配给变量等,但无法正常工作。
从我在网上找到的内容来看,我不确定替换值是否可以是正则表达式,但我还不清楚。这是通过正则表达式实现的,还是有更好的方法呢?
答案 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
。请参阅演示。