簡體   English   中英

如何匹配字符串模式?

[英]How to match string pattern?

我有一個數據集,其中 2 列的每一行都包含一個這樣的字符串 -

  • WO-05078125:AN20033315:客戶更換的訂購部件
  • WO-04981906:AN19550541:回答了生物醫學問題

我試圖擺脫第一部分WO-05078125: AN20033315: 數字可能不同,但總是相同的模式。

請問我該如何解決這個問題?

您可以使用正則表達式。

import re
re.sub(pattern, repl(acement), string)

因為您不想用任何東西替換它,所以您可以使用空字符串來擺脫它。 您可以使用 'WO-05078125: ' 作為模式,但您也可以使用特殊字符,如\d(數字)或類似的東西。 更多請點擊這里

我認為這可以解決您的問題。

rows = ["WO-04981906: AN19550541: Answered Biomed questions", "WO-05078125: AN20033315: Ordered part for customer to exchange", ......]
first_part = []
second_part = []
last_part = []
for row in rows:
    split_row = row.split(":")
    first_part.append(split_row[0])
    second_part.append(split_row[1])
    last_part.append(split_row[2])

first_part中全是"WO-XXXXXXXX" ,在second_part中全是"ANXXXXXXXX" ,在last_part中全是描述。

解決問題最直接的方法之一是使用正則表達式,但我並不是說直接使用re模塊。 相反,您可以使用pandas及其名為repalce的內置函數之一。 通過查看下面的代碼,您可以更深入地了解該過程。 由於您沒有提供可重現的示例,因此我使用您的輸入示例制作了一個 dataframe。

import pandas as pd
df = pd.DataFrame({"myColumn": ["WO-05078125: AN20033315: Ordered part for customer to exchange", "WO-04981906: AN19550541: Answered Biomed questions"]})

df["replaced"] = df["myColumn"].str.replace("WO\-\d+\:\sAN\d+\:\s", "")
df

Output

我的專欄 更換
0 WO-05078125:AN20033315:客戶更換的訂購部件 訂購的零件供客戶更換
1個 WO-04981906:AN19550541:回答了生物醫學問題 回答生物醫學問題

解釋

WO\-\d+\:\sAN\d+\:\s是我們在這種情況下使用的模式。 它用空字符串(“”)替換所需的部分。

暫無
暫無

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

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