如何从 Python 的电子邮件中提取长 URL?

How to extract long URL from email with Python?

我需要从使用 Gmail 的 IMAP 抓取的电子邮件中提取很长的 URL(示例如下)。

https://example.com/account/resetpassword?code=e8EkT%2B48uMCHr3Sq4QZVr0%2FVHrTBwQvhYwubjeaKozn29I7VGvWSYNO6VNRLXCK230P%2FklDrFC6BpPI7OF%2F5yawHlux80jqTBhTq2QRS4r7sEnSM9qKV1mIXkTzx%2B5tjakgElg%3D%3D&returnUrl=example.com

但是,当我尝试打印抓取的消息时,我注意到我的长 URL 里面有一些额外的东西,例如 =\r\n3D(请参见下面的示例)或者它被 =.

分成几行
https://example.com/account/resetpa=\r\nssword?code=3De8EkT%2B48uMCHr3Sq4QZVr0%2FVHrTBwQvhYwubjeaKozn29I7VGvWSYNO6V=\r\nNRLXCK230P%2FklDrFC6BpPI7OF%2F5yawHlux80jqTBhTq2QRS4r7sEnSM9qKV1mIXkTzx%2B5=\r\ntjakgElg%3D%3D&returnUrl=3Dexample.com

https://example.com/account/resetpa=
ssword?code=3De8EkT%2B48uMCHr3Sq4QZVr0%2FVHrTBwQvhYwubjeaKozn29I7VGvWSYNO6V=
NRLXCK230P%2FklDrFC6BpPI7OF%2F5yawHlux80jqTBhTq2QRS4r7sEnSM9qKV1mIXkTzx%2B5=
tjakgElg%3D%3D&returnUrl=3Dexample.com

如何确保长 URL 中没有添加任何内容,以便我以后可以使用它打开?

"\r\n"是一个回车return,可以用urlstring.replace("\r\n", "")去掉。 %3D 表示 =(source),但我不明白为什么这对您来说是个问题。唯一的问题是马车 returns,它在不同的行上打印你的 URL。

我认为带有 =3D 的格式称为可打印引用。 https://en.wikipedia.org/wiki/Quoted-printable

您可以尝试使用 quopri.decodestring(string)https://docs.python.org/2/library/quopri.html