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