Python如何从一个字符串中解析2个URL,然后将其映射回来?

Python如何从一个字符串中解析2个URL,然后将其映射回来?,python,urllib,Python,Urllib,我在pandas数据框中有一列,其中一些值的格式是:“From…to”。我想只解析第一个URL,这样gclid和其他ID就会消失,我想将其映射回数据帧,例如:“从到” 我知道有一个名为urllib的python模块,但是如果我对这个字符串应用一个call a path(),它只解析第一个URL,然后我就失去了与第一个URL同样重要的另一部分 谁能帮帮我吗?谢谢大家! 如果使用DataFrame,则使用replace(),它可以使用regex查找类似“?…”(以?开头,以空格结尾,或者以空格开头,

我在pandas数据框中有一列,其中一些值的格式是:“From…to”。我想只解析第一个URL,这样gclid和其他ID就会消失,我想将其映射回数据帧,例如:“从到”

我知道有一个名为urllib的python模块,但是如果我对这个字符串应用一个call a path(),它只解析第一个URL,然后我就失去了与第一个URL同样重要的另一部分


谁能帮帮我吗?谢谢大家!

如果使用DataFrame,则使用
replace()
,它可以使用regex查找类似
“?…”
(以
开头,以
空格
结尾,或者以
空格
开头,并且只有与
空格
-
“\?[^]+”
不同的字符)

结果

                                     text
0  From https://....com to https://...com

顺便说一句:您还可以尝试更复杂的正则表达式,以确保它是以http开头的url的一部分

df['text'] = df['text'].str.replace('(http[^?]+)\?[^ ]+', '\\1')

我使用
(…)
?…
之前捕获此url,并使用
\\1
(已经没有
?…

将其放回原处。我不完全清楚您在问什么。你能发布一些代码来显示你想要的特定行为吗?如果你有这么简单的字符串
https://....com 到https://...com
然后您可以
文本。替换(“From”、“”)。替换(“to”、“”)。拆分(“”)以获取列表
[“https://....com", "https://...com“]
如果我这样做:t=urllib.parse.urlparse(“从https://?gclid=…到https://”,我得到的是:ParseResult(scheme='',netloc='',path='From https://',params='',query='gclid=…到https://',fragment=''。我的问题是,第二个URL将转到查询部分,所以如果我调用t.path(),我只从https://部分返回,而不是解析的第一个URL和第二个URL(我想从第一个URL中删除ID和其他唯一标识符,然后将其映射回原始值的位置。如果要删除
?gclid=…
,则尝试使用regex替换它。如果要使用list
[”https://....com?gclid=", "https://...com"]
然后您可以从列表中获取第一个元素,并
拆分(“?”)
将其删除。哇,谢谢,顺便说一句,该部分正是我所需要的!祝您有愉快的一天!
df['text'] = df['text'].str.replace('(http[^?]+)\?[^ ]+', '\\1')