【发布时间】:2018-08-23 09:06:06
【问题描述】:
我是正则表达式的初学者,想问一下如何用正则表达式解决这个问题。目前我正在尝试预处理德语文本。德语的字母表中有一些特定的字符(ä、ö、ü)。然而,这些字母也可以用不同的方式书写(ae、oe、ue)。所以我只是使用了替换方法,效果很好。
import pandas as pd
df = pd.DataFrame({"text": ["Uebergang", "euer"]})
df["text"] = df["text"].str.replace("ae", "ä")
df["text"] = df["text"].str.replace("Ae", "Ä")
df["text"] = df["text"].str.replace("oe", "ö")
df["text"] = df["text"].str.replace("Oe", "Ö")
df["text"] = df["text"].str.replace("ue", "ü")
df["text"] = df["text"].str.replace("Ue", "Ü")
但也有不应该发生替换的特定模式。就像“euer”这个词一样。在这篇文章的帮助下,我尝试制作一个有效的正则表达式:Regex Pattern to Match, Excluding when... / Except between
df["text"] = df["text"].str.replace("[AaÄäEe]ue|(ue)", "ü")
因此,如果括号 [AaÄäEe] 中有任何字符,然后是“ue”,那么我想排除这些情况。否则“ue”将被“ü”代替。但这不起作用,那你怎么做呢?提前致谢。
【问题讨论】: