如何使用Pandas删除列值中URL字符串的第一部分?

2024-09-28 05:19:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力删除csv文件中myId列中URL的第一部分

my.csv

myID

https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:b1234567-9ee6-11b7-b4a2-7b8c2344daa8d

myID的所需输出

b1234567-9ee6-11b7-b4a2-7b8c2344daa8d

我的代码:

df['myID'] = df['myID'].map(lambda x: x.lstrip('https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:'))

myID中的输出(字符串前面缺少第一个字母“b”):

1234567-9ee6-11b7-b4a2-7b8c2344daa8d

上面的代码删除了https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:,但是如果ID前面有一个字母,那么它也会删除myID中的第一个字母,如果它是一个数字,那么它将保持不变

有人能帮忙吗?谢谢


Tags: csvhttpscomemailmyservice字母open
3条回答

您可以使用re(如果要提取的部分之前的部分始终相同)

import re

idx = re.search(r':zib:', myID)
myNewID = myID[idx.end():]

然后你将有:

myNewID

'b1234567-9ee6-11b7-b4a2-7b8c2344daa8d'

您可以在此处尝试替换正则表达式:

df['myID'] = df['myID'].str.replace('^.*:', '', regex=True)

这种方法是简单地删除从MyID开始到最后一个冒号(包括冒号)的所有内容。这将留下您想要保留的UUID

使用lstrip,可以从字符串中删除与作为参数传递的字符集匹配的所有字符。因此:

string = abcd
test = string.lstrip(ad)
print(test)

如果要去除字符串的前x个字符,可以像数组一样对其进行切片。对你来说,这就像:

df['myID'] = df['myID'].map(lambda x: x[:-37])

但是,要使其工作,您希望从字符串中获取的部分应该具有恒定的大小

相关问题 更多 >

    热门问题