[英]How to remove first part of URL string in column value with Pandas?
我正在努力刪除 csv 文件中 myId 列中我的 URL 的第一部分。
我的.csv
myID
https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:b1234567-9ee6-11b7-b4a2-7b8c2344daa8d
myID 所需的 output
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 中的 output(字符串前面缺少第一個字母“b”):
1234567-9ee6-11b7-b4a2-7b8c2344daa8d
上面的代碼刪除https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:
但是,如果 ID 前面有一個,它也會刪除 myID 中的第一個字母,如果它是一個數字,那么它仍然存在不變。
有人可以幫忙嗎? 謝謝!
您可以在這里嘗試正則表達式替換:
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])
但是,要使其正常工作,您要從字符串中獲取的部分應該具有恆定的大小。
您可以使用re (如果您要提取的部分之前的部分始終相同)
import re
idx = re.search(r':zib:', myID)
myNewID = myID[idx.end():]
然后你將擁有:
myNewID
'b1234567-9ee6-11b7-b4a2-7b8c2344daa8d'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.