【发布时间】:2022-01-11 11:46:59
【问题描述】:
我正在为 SpaCy 预处理文本并尝试删除标点符号,数字之间除外。但是,在某些情况下,当标点符号与数字连接时,它不会被删除。您能否建议如何处理这种极端情况?
一个例子:
import re
text = "Fast-charge $ EV ! battery maker StoreDot pulls in $80.7M led led by Vietnam’s VinFast"
preprocessed = re.sub(r'(?<!\d)[%$!.,,;:’“”—-](?!\d)',' ', text)
print(preprocessed)
# Fast charge EV battery maker StoreDot pulls in $80.7M led by Vietnam s VinFast
预期结果:
# Fast charge EV battery maker StoreDot pulls in 80.7M led by Vietnam s VinFast
【问题讨论】:
-
也许断言不是一侧的数字?
(?<!\d)[$!.,;:’“”—-]|[$!.,;:’“”—-](?!\d)regex101.com/r/JD2oEK/1 -
您特别想保留什么?只有逗号和点之间的数字?
-
@JvdV 是的,我只想留下数字,以便 SpaCY 可以将其识别为数字。本质上,我与 $ 和 % 斗争。
-
@Thefourthbird 不知道为什么,但这不适用于“根据 Coinbase 数据,比特币下跌 4.3% 和以太币下跌 5.1%”这样的情况
-
@Thefourthbird,太棒了,非常感谢,是的,它有效!您能否在答案中解释一下,真的很感激吗?