簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM