簡體   English   中英

提取符號后的單詞 python

[英]Extract words after a symbol in python

我有以下數據,我想從這些數據中提取 source= 。 有沒有辦法創建一個通用的正則表達式 function 以便我可以應用於其他列以及提取等號后的單詞?

Data                      Data2
source=book               social-media=facebook
source=book               social-media=instagram 
source=journal            social-media=facebook

我正在使用 python 並且我嘗試了以下操作:

df['Data'].astype(str).str.replace(r'[a-zA-Z]\=', '', regex=True)

但它沒有用

你可以試試這個:

df.replace(r'[a-zA-Z]+-?[a-zA-Z]+=', '', regex=True)

它給你以下結果:

      Data      Data2
0     book   facebook
1     book  instagram
2  journal   facebook

在這種情況下不需要正則表達式:

print(df['Data'].apply(lambda x : x.split('=')[-1]))
print(df['Data2'].apply(lambda x : x.split('=')[-1]))

您必須重復字符 class 1 次或多次,並且不必轉義等號。

您可以做的是使匹配更廣泛一些,以匹配除空白字符或等號之外的所有字符。

然后將結果設置為新值。

import pandas as pd

data = [
    "source=book",
    "source=journal",
    "social-media=facebook",
    "social-media=instagram"
]

df = pd.DataFrame(data, columns=["Data"])
df['Data'] = df['Data'].astype(str).str.replace(r'[^\s=]+=', '', regex=True)
print(df)

Output

        Data
0       book
1    journal
2   facebook
3  instagram

如果等號后面必須有一個值,你也可以使用 str.extract

df['Data'] = df['Data'].astype(str).str.extract(r'[^\s=]+=([^\s=]+)')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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