繁体   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