我正在努力删除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中删除第一个字母;如果它是一个数字,则它保持不变。
有人可以帮忙吗?谢谢!
答案 0 :(得分:1)
您可以在这里尝试使用正则表达式替换:
df['myID'] = df['myID'].str.replace('^.*:', '', regex=True)
此方法是简单地从MyID
的开头直到最后一个冒号(包括最后一个冒号)中删除所有内容。这将留下您要保留的UUID。
答案 1 :(得分:0)
使用lstrip,可以从字符串中删除与作为参数传递的字符集匹配的所有字符。所以:
string = abcd
test = string.lstrip(ad)
print(test)
如果要去除字符串的前x个字符,则可以像数组一样对其进行切片。对您来说,就像:
df['myID'] = df['myID'].map(lambda x: x[:-37])
但是,要使其正常工作,要从字符串中获取的部分应具有恒定的大小。
答案 2 :(得分:0)
您可以使用 re (如果要提取的部分之前的部分始终相同)
import re
idx = re.search(r':zib:', myID)
myNewID = myID[idx.end():]
那么您将拥有:
myNewID
'b1234567-9ee6-11b7-b4a2-7b8c2344daa8d'