我已经问过一个关于替换特定模式的正则表达式问题(正则表达式:匹配特定模式,如果匹配在特定上下文中,则排除)。这一切都是为了对文本数据进行预处理以进行训练。
现在我想使用正则表达式来替换熊猫数据框中除 unicode 字母以外的任何内容。我用过
https://regex101.com/
https://regexr.com/
得到似乎解决我的问题的正则表达式\p{^L}+。后来我意识到我发现在 Perl 中使用的表达式(Perl Compatible Regular Expressions [PCRE])不一定适用于 Python。我也找到了支持这个表达式的正则表达式包。但是,pandas 似乎还不支持正则表达式,或者我以错误的方式使用了它:
import regex
import pandas as pd
df = pd.DataFrame({"text": ["Room: 25m²", "I have eaten ¼ of the cake."]})
df["text"] = df["text"].str.replace(regex.compile("\p{^L}+"), " ")
# Returns a TypeError: object of type '_regex.Pattern' has no len()
因此,我试图找到使用 re 包的方法。我在这里找到了答案。所以我是这样使用的:
import re
import pandas as pd
df = pd.DataFrame({"text": ["Room: 25m²", "I have eaten ¼ of the cake."]})
df["text"] = df["text"].str.replace("[\W\d_]", " ")
它确实替换了很多特殊字符。它不会用 m 的 2 次幂替换表达式或我们有分数的表达式。我不会将这两个字符视为字母,而是数字或 unicode 中的特殊字符。那么我该如何处理这些特殊字符呢?re包可以吗?我不想使用特定的 unicode 来匹配这些情况。如果可能,将不胜感激通用解决方案。
忽然笑
慕森王
相关分类