我正在處理大量無法在 excel 中處理的資料,因此我使用的是 Pandas/Python,但我對它比較陌生。我有一列書名,其中還包括書名前后的體裁。我只希望該列包含書名,那么洗掉型別的最簡單方法是什么?
以下是該列包含的內容的示例:
Book Labels
Science Fiction | Drama | Dune
Thriller | Mystery | The Day I Died
Thriller | Razorblade Tears | Family | Drama
Comedy | How To Marry Keanu Reeves In 90 Days | Drama
...
所以上面,書名將是沙丘,我死的那一天,剃刀之淚,以及如何在 90 天內嫁給基努里維斯,但正如你所看到的,這些型別在標題之前和之后。
我想我可以創建一個所有型別的串列(因為只有這么多)并將它們從列中與“|”一起洗掉 字符,但如果有人對洗掉流派和“|”的更簡單方法有建議 鑰匙,請幫幫我。
uj5u.com熱心網友回復:
它是對@tdy Regex 解決方案的增強。原始正則運算式Family|Drama將匹配字串中的“Family”和“Drama”。如果書名包含 中的單詞gernes,這些單詞也將被洗掉。
假設標簽以“|”分隔,我們要移除的匹配條件有3個。
- Gerne 在字串的開頭。例如
Drama | ... - 格恩在中間。例如
... | Drama | ... - Gerne 在字串的末尾。例如
... | Drama
使用正則運算式(^|\| )(?:Family|Drama)(?=( \||$))匹配三個條件之一。請注意,| Drama | Family有 2 個重疊的匹配項,這里我?=( \||$)用來避免僅匹配一次。有關更多詳細資訊,請參閱此問題[使用正則運算式替換重疊子模式]。
>>> genres = ["Family", "Drama"]
>>> df
# Book Labels
# 0 Drama | Drama 123 | Family
# 1 Drama 123 | Drama | Family
# 2 Drama | Family | Drama 123
# 3 123 Drama 123 | Family | Drama
# 4 Drama | Family | 123 Drama
>>> re_str = "(^|\| )(?:{})(?=( \||$))".format("|".join(genres))
>>> df['Book Labels'] = df['Book Labels'].str.replace(re_str, "", regex=True)
# 0 | Drama 123
# 1 Drama 123
# 2 | Drama 123
# 3 123 Drama 123
# 4 | 123 Drama
>>> df["Book Labels"] = df["Book Labels"].str.strip("| ")
# 0 Drama 123
# 1 Drama 123
# 2 Drama 123
# 3 123 Drama 123
# 4 123 Drama
uj5u.com熱心網友回復:
由于您的示例顯示標題不在一致的位置,因此我同意您的想法:
創建所有流派的串列(因為只有這么多)并將這些流派與“|”一起從列中洗掉 人物
使用Series.replace去除流派和Series.str.strip剝離的分離:
genres = ['Science Fiction', 'Drama', 'Thriller', 'Mystery', 'Family', 'Comedy']
df['Book Labels'] = df['Book Labels'].replace('|'.join(genres), '', regex=True).str.strip('| ')
# Book Labels
# 0 Dune
# 1 The Day I Died
# 2 Razorblade Tears
# 3 How To Marry Keanu Reeves In 90 Days
如果標題總是在一個一致的位置,比如串列中的第三個,那么我們就不需要流派串列。我們可以使用Series.str.splitwithexpand=True并獲取第三列(索引 2):
# only works if the title is always in position 3 (index 2)
index = 2
df['Book Labels'] = df['Book Labels'].str.split('|', expand=True)[index]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/397690.html
